文档章节

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

有梦为嘛
 有梦为嘛
发布于 2016/08/09 16:45
字数 458
阅读 79
收藏 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
博文 4
码字总数 1056
作品 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
JSON-lib框架,转换JSON、XML

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

五大三粗
2015/11/03
0
0
ZK7.0.3中从MongoDB下载文件

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

亚林瓜子
06/12
0
0
java unicode转GBK

我们经常会遇到编码问题。Java号称国际化的语言,是因为它的class文件采用UTF-8,而JVM运行时使用UTF-16(至于为什么JVM中要采用UTF-16,我没看过 相关的资料,但我猜可能是因为JAVA里面一个...

圣洁之子
2015/03/02
0
0
netty 学习 (3)发送对象

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

yaokangjun
2014/06/04
0
1

没有更多内容

加载失败,请刷新页面

加载更多

20180920 rzsz传输文件、用户和用户组相关配置文件与管理

利用rz、sz实现Linux与Windows互传文件 [root@centos01 ~]# yum install -y lrzsz # 安装工具sz test.txt # 弹出对话框,传递到选择的路径下rz # 回车后,会从对话框中选择对应的文件传递...

野雪球
31分钟前
0
0
OSChina 周四乱弹 —— 毒蛇当辣条

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ 达尔文:分享花澤香菜/前野智昭/小野大輔/井上喜久子的单曲《ミッション! 健?康?第?イチ》 《ミッション! 健?康?第?イチ》- 花澤香菜/前野智...

小小编辑
今天
5
2
java -jar运行内存设置

java -Xms64m #JVM启动时的初始堆大小 -Xmx128m #最大堆大小 -Xmn64m #年轻代的大小,其余的空间是老年代 -XX:MaxMetaspaceSize=128m # -XX:CompressedClassSpaceSize=6...

李玉长
今天
1
0
Spring | 手把手教你SSM最优雅的整合方式

HEY 本节主要内容为:基于Spring从0到1搭建一个web工程,适合初学者,Java初级开发者。欢迎与我交流。 MODULE 新建一个Maven工程。 不论你是什么工具,选这个就可以了,然后next,直至finis...

冯文议
今天
1
0
RxJS的另外四种实现方式(四)——性能最高的库(续)

接上一篇RxJS的另外四种实现方式(三)——性能最高的库 上一篇文章我展示了这个最高性能库的实现方法。下面我介绍一下这个性能提升的秘密。 首先,为了弄清楚Most库究竟为何如此快,我必须借...

一个灰
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部