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

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

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

下面贴上代码:

/**

* summary:将字符串存储为文件 采用Base64解码

* @param fileStr

* @param outfile

*

*/

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);

}

}

}

/**

*

*

* summary:将字符串存储为文件

* @param fileStr

* @param outfile

*

*/

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;

}

/**

*

* summary:将流转化为字节数组

* @param inputStream

* @return

* @throws IOException

*

*/

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);

}

java流的相互转化_java 将文件流转化成字符串传输相关推荐

  1. java 上传断点续传_JAVA大文件上传断点续传解决方案

    javaweb上传文件 上传文件的jsp中的部分 上传文件同样可以使用form表单向后端发请求,也可以使用 ajax向后端发请求 1.通过form表单向后端发送请求 Save 改进后的代码不需要for ...

  2. java流写入数据库_Java 8:在2分钟内将智能流与数据库一起使用

    java流写入数据库 快速流媒体 当Java 8最终问世时,我和一些大学开始了一个开源项目,以利用Java 8的流库使整个Java / DB问题更进一步,以便将数据库表视为纯Java 8流. 速度诞生 ...

  3. java获取扩展名_Java获取文件扩展名称

    有时在处理文件时,需要根据文件类型对它们进行不同的处理. java.io.File没有任何获取文件扩展名的方法,这里提供了一个实用工具方法来获取文件扩展名. Java获取文件扩展名 在句点(.)之后, ...

  4. IO流的练习5 —— 读取文件中的字符串,排序后写入另一文件中

    需求:已知s.txt文件中有这样的一个字符串:"hcexfgijkamdnoqrzstuvwybpl" 请编写程序读取数据内容,把数据排序后写入ss.txt中. 分析: A:读取文 ...

  5. java下载图片压缩包_java压缩文件和下载图片示例

    本文实例为大家分享了java压缩文件和下载图片示例,供大家参考,具体内容如下 主页面index.xml 项目的主页 主页主页 湖南长沙 发布方式一...... 页面内容压缩演示--gzip 下载图片 ...

  6. java流的序列化_Java中的对象流和序列化介绍

    最近,在讲流的使用,其中对象流的作用其实就是将自定义类的对象与流之间相互转换的流. 看起来还是挺简单的,那么看下面的例子: public class Student{ private int id; ...

  7. java流的应用_Java中I/O流的应用

    Java中I/O流的应用 iLeGeND packagecom.hp.io; /**  I/O流的应用 * 实现目标: *   首先创建一个文件 *   通过键盘向文件添加内容 *   然后把文件的内 ...

  8. Java 重定向 无法写入_java IO 文件读入,写入,重定向

    Java代码 packagestar20110526; importjava.io.BufferedInputStream; importjava.io.BufferedOutputStream; i ...

  9. Java读 写文本_java读文件写文件的方法

    java读文件写文件的方法 有的时候经常为真么读写文件最合理发愁,因为JAVA提过读写文件的方式太多了(C更甚至,fopen & open又有多少人傻傻分不清,更别说ReadFile了).今天 ...

最新文章

  1. 微软独立虚拟机Hyper-V Server 2008
  2. 三星s8清除html查看器,三星S8手机怎么双清 清理手机数据方法介绍 - Iefans
  3. OpenCV图像操作的实例(附完整代码)
  4. OpenCV+python实现视频文件读写
  5. 链路聚合-CISCO
  6. PHP从零开始--循环数组
  7. Vue.js中data,props和computed数据
  8. 如果微信被运维删库、跑路,会造成什么恐怖的后果?
  9. 卡尔曼滤波,互补滤波,“Tsinghua”滤波
  10. c++ SIMD AVX2比较 例子
  11. 微信小程序UI组件库合集
  12. 计算机一级excel函数rank函数应用,2017年计算机一级excel操作题
  13. Mac pro 安装ubuntu系统
  14. hdu 2079 - 选课时间
  15. reactor项目Maven配置
  16. Cloudera Manager6.3.1+CDH6.3.2本地仓库方式搭建(超详细版)
  17. 《信息化项目文档模板十一——系统运维流程工作流程模板》
  18. 微信的新功能,快来试一下
  19. HTML播放华为云视频流,华为云点播服务视频管理功能强大,上云就是省心
  20. 做一个优秀的开源项目,需要注意哪些方面?

热门文章

  1. cuda cudnn
  2. 假如你的入职薪水为10k,每年涨幅入职薪水的5%,50年后你的工资是多少?
  3. bugku 手机号码破解WIFI密码
  4. phpstudy创建网页并用php输出hello world
  5. 中介变量、调节变量与协变量
  6. 这几个宝藏成长利器,快码起
  7. 改变eclipse的主题,使用IDEA的黑色主题
  8. funcode坐标c语言,c语言程序设计_坦克大战(提高篇)(funcode环境)
  9. 4.22初识云计算关键技术
  10. Databend 开源周报 #66