文档章节

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

有梦为嘛
 有梦为嘛
发布于 2016/08/09 16:45
字数 483
阅读 95
收藏 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框架,转换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
java unicode转GBK

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

圣洁之子
2015/03/02
0
0
ZK7.0.3中从MongoDB下载文件

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

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

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

yaokangjun
2014/06/04
0
1

没有更多内容

加载失败,请刷新页面

加载更多

0015-如何使用Sentry管理Hive外部表权限

1.文档编写目的 本文档主要讲述如何使用Sentry对Hive外部表权限管理,并基于以下假设: 1.操作系统版本:RedHat6.5 2.CM版本:CM 5.11.1 3.集群已启用Kerberos和Sentry 4.采用具有sudo权限的...

Hadoop实操
23分钟前
1
0
边缘计算与数据中心的发展趋势

导读 Gartner研究表明,人工智能、物联网和5G助力下一代商业创新,由此产生大量数据,2020年前企业将使用超过75亿台联网设备。 在几乎每个方面,社会的节奏都正变得更快。我们希望客户服务问...

问题终结者
35分钟前
4
0
toString();

package com.atguigu.java1; import java.util.Date; /** * toString()的使用: * * 1.java.lang.Object类中toString()定义如下: * public String toString() { return getClass().getName......

architect刘源源
今天
1
3
不可不说的Java“锁”事

前言 Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。本文旨在对锁相关源码(本文中的源码来自JDK 8)、使用场景进行举例,为读者介绍主流锁的知识点...

Java干货分享
今天
1
0
Java GoEasy 实现服务端推送和Web端推送

项目中需要消息推送,又想降低开发成本。Java服务器端推送,Web端接收推送信息。 具体需求: 需求一:系统框架实现全局异常捕获并录入日志表,实现实时推送消息到客户端页面展示。 需求二:系...

Gibbons
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部