最近项目中需要把文件转为Byte数组进行操作,特此记录便于日后查阅。
package com.openailab.oascloud.file.util;
import com.openailab.oascloud.file.common.consts.BootstrapConst;
import java.io.*;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
/**
* @description: 文件与Byte数组相互转换
* @author: zhangzhixiang
* @createDate: 2020/1/7
* @version: 1.0
*/
public class Byte2InputStream {
/**
* 将文件转为byte数组
*
* @param filename
* @return byte[]
* @author zxzhang
* @date 2019/10/8
*/
public static byte[] file2ByteArray(String filename) throws IOException {
FileChannel fc = null;
try {
fc = new RandomAccessFile(filename, "r").getChannel();
MappedByteBuffer byteBuffer = fc.map(FileChannel.MapMode.READ_ONLY, 0,
fc.size()).load();
byte[] result = new byte[(int) fc.size()];
if (byteBuffer.remaining() > 0) {
byteBuffer.get(result, 0, byteBuffer.remaining());
}
return result;
} catch (IOException e) {
e.printStackTrace();
throw e;
} finally {
try {
fc.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 将Byte数组转换成文件
*
* @param bytes
* @param filePath
* @param fileName
* @return void
* @author zxzhang
* @date 2019/10/8
*/
public static void byteArray2File(byte[] bytes, String filePath, String fileName) {
BufferedOutputStream bos = null;
FileOutputStream fos = null;
File file = null;
try {
File dir = new File(filePath);
if (!dir.exists()) {// 判断文件目录是否存在
dir.mkdirs();
}
file = new File(filePath + BootstrapConst.PATH_SEPARATOR + fileName);
fos = new FileOutputStream(file);
bos = new BufferedOutputStream(fos);
bos.write(bytes);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (bos != null) {
try {
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (fos != null) {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
到此 Java语言文件和Byte数组相互转换介绍完成。