java 按字节读写二进制文件(Base64编码解码)
最近在做项目时遇到这样一个需求:依次读取本地文件夹里所有文件的内容,转为JSON,发送到ActiveMQ的消息队列, 然后从MQ的消息队列上获取文件的信息,依次写到本地。常见的文件类型,比如.txt 和.png等文件的读写并不难。但是,我刚才所提到的需求,如果用常规的方法去读写,比如按字节读取文件内容,转为字符串,再转为JSON发送到MQ的队列,然后从MQ获取原文件信息写到文件,就会发现写出来的文件和文件不一样。我的解决方法是:按字节读取原文件,转为字节数组,将字节数组转为Base64编码格式的字符串,然后转为JOSN发送到MQ,然后从MQ获取到JOSN,将文件内容通过Base64解码为字符数组,写文件到某个路径。以下为代码:
测试类 Test.class
/**
* @Desc: 测试类
* @Date: 2016/7/1
* @Version: 1.0
* @Author: lzy
*/
public class Test {
public static void main(String[] args){
String fileName="JUBE99EGRR311800"; //文件名:测试文件是没有后缀名的二进制
String fileReadPath="d:/read/"; //文件所在文件夹
String filePath=fileReadPath+fileName; //文件路径
//工具类
FileUtil fileUtil=new FileUtil();
//按字节读取文件内容,并转换为Base64编码字符串
String fileJsonStr=fileUtil.fileToJson(fileName,filePath);
//文件内容Base64解码,按字节写文件
fileUtil.writeFile(fileJsonStr,"d:/write/");
}
}
FileUtil.class 文件转换工具类
/**
* @Desc: 文件内容转换工具类
* @Date: 2016/7/1
* @Version: 1.0
* @Author: lzy
*/
public class FileUtil {
/**
* 文件内容转为 Base64 编码的 JSON
* @param<