文档章节

java 将文件流转化成字符串传输

有梦为嘛
 有梦为嘛
发布于 2016/08/09 16:45
字数 483
阅读 105
收藏 0

1. 需要文件转换成字节数组。

2. 将字节数组转换成字符串,不过需要注意的是需要将字节数组使用Base64加密,这样防止传输过程中因为编码问题导致文件损坏的问题。

3. 接收方将字符串转化成字节数组,再使用Base64解密,再输出到文件就OK了。

下面贴上代码: 

   /**
	 * summary:将字符串存储为文件 采用Base64解码
	 * @param fileStr
	 * @param outfile
	 * </pre>
	 */
	public static void streamSaveAsFile(InputStream is, String outFileStr) {
		FileOutputStream fos = null;
		try {
			File file = new File(outFileStr);
			BASE64Decoder decoder = new BASE64Decoder();
			fos = new FileOutputStream(file);
			byte[] buffer = decoder.decodeBuffer(is);
			fos.write(buffer, 0, buffer.length);
		} catch (Exception e) {
			e.printStackTrace();
			throw new RuntimeException(e);
		} finally {
			try {
				is.close();
				fos.close();
			} catch (Exception e2) {
				e2.printStackTrace();
				throw new RuntimeException(e2);
			}
		}
	}

	/**
	 * 
	 * <pre>
	 * summary:将字符串存储为文件    
	 * @param fileStr
	 * @param outfile
	 * </pre>
	 */
	public static void stringSaveAsFile(String fileStr, String outFilePath) {
		InputStream out = new ByteArrayInputStream(fileStr.getBytes());
		FileStrUtil.streamSaveAsFile(out, outFilePath);
	}

	/**
	 * 将流转换成字符串 使用Base64加密
	 * 
	 * @param in输入流
	 * @return
	 * @throws IOException
	 */
	public static String streamToString(InputStream inputStream) throws IOException {
		byte[] bt = toByteArray(inputStream);
		inputStream.close();
		String out = new sun.misc.BASE64Encoder().encodeBuffer(bt);
		return out;
	}
	
	/**
	 * 将流转换成字符串
	 * 
	 * @param in输入流
	 * @return
	 * @throws IOException
	 */
	public static String fileToString(String filePath) throws IOException {
		File file = new File(filePath);
		FileInputStream is = new FileInputStream(file);
		String fileStr = FileStrUtil.streamToString(is);
		return fileStr;
	}

	/**
	 * <pre>
	 * summary:将流转化为字节数组  
	 * @param inputStream
	 * @return
	 * @throws IOException
	 * </pre>
	 */
	public static byte[] toByteArray(InputStream inputStream) throws IOException {
		ByteArrayOutputStream out = new ByteArrayOutputStream();
		byte[] buffer = new byte[1024 * 4];
		byte[] result = null;
		try {
			int n = 0;
			while ((n = inputStream.read(buffer)) != -1) {
				out.write(buffer, 0, n);
			}
			result = out.toByteArray();
		} catch (Exception e) {
			e.printStackTrace();
			throw new RuntimeException(e);
		} finally {
			out.close();
		}
		return result;
	}
	
	
	public static void main(String[] args) throws Exception {
		String fromPath = "F:\\fileupload\\aaa.docx";
		String toPath = "C:\\Users\\Desktop\\aaaa.docx";
		String fileStr = FileStrUtil.fileToString(fromPath);
		FileStrUtil.stringSaveAsFile(fileStr, toPath);
	}

 

© 著作权归作者所有

共有 人打赏支持
有梦为嘛
粉丝 0
博文 6
码字总数 2713
作品 0
西安
高级程序员
私信 提问
JSON-lib框架,转换JSON、XML

Json-lib可以将Java对象转成json格式的字符串,也可以将Java对象转换成xml格式的文档,同样可以将json字符串转换成Java对象或是将xml字符串转换成Java对象。 一、 准备工作 1、 首先要去官方...

五大三粗
2015/11/03
0
0
JSON-lib框架,转换JSON、XML不再困难

JSON-lib框架,转换JSON、XML不再困难 Json-lib可以将Java对象转成json格式的字符串,也可以将Java对象转换成xml格式的文档,同样可以将json字符串转换成Java对象或是将xml字符串转换成Java对...

DavidBao
2015/05/01
0
0
ZK7.0.3中从MongoDB下载文件

问题 在完成Spring从MongoDB中下载文件之GridFS之后,现在需要在ZK7.0.3的ViewModel中下载该文件。 思路 先从MongoDB获取到,以及把转化为ZK的Filedownload能够使用的进行文件下载。 实现 导...

亚林瓜子
2018/06/12
0
0
netty 学习 (3)发送对象

Netty中,通讯的双方建立连接后,会把数据按照ByteBuf的方式进行传输,例如http协议中,就是通过HttpRequestDecoder对ByteBuf数据流进行处理,转换成http的对象。基于这个思路,我自定义一种...

yaokangjun
2014/06/04
0
1
关于Java编程基础学习输入输出IO的问题

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互...

Java小辰
2018/05/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

uml类图

平时阅读一些远吗分析类文章或是设计应用架构时没少与UML类图打交道。实际上,UML类图中最常用到的元素五分钟就能掌握,下面赶紧来一起认识一下它吧: 一、类的属性的表示方式 在UML类图中,...

asdf08442a
5分钟前
0
0
Linux下执行脚本报错提示invalid option 3: set: -

1、在环境下执行sh报错invalid option 3: set: - 2、于是换成chmod 777 install.sh改执行权限,并且默认使用#!/bin/bash bash: ./install.sh: /bin/bash^M: bad interpreter: No such file ......

noob_chr
5分钟前
0
0
phpstrom2018激活与汉化

phpstrom2018激活与汉化 方法一. 直接用浏览器打开 http://idea.lanyus.com/ (推荐) 点击页面中的“获得注册码”,然后在注册时切换至Activation Code选项,输入获得的注册码一长串字符串,...

万建宁
7分钟前
0
0
Kali Linux NetHunter教程Kali NetHunter支持的设备和ROMs

Kali Linux NetHunter教程Kali NetHunter支持的设备和ROMs NetHunter是一个基于Kali Linux为Nexus设备构建的Android渗透测试平台,其中包括一些特殊和独特的功能。NetHunter支持无线802.11注...

大学霸
16分钟前
1
0
端口可用性探测

在服务器上打开了一个端口,我们需要测试是否开启成功是否可用,可以在本机使用 traceroute (linux)工具 traceroute 是几乎所有 Linux 发行版本预装的网络测试工具,用于跟踪 Internet 协议(...

applepaihs
16分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部