📅  最后修改于: 2023-12-03 15:16:37.849000             🧑  作者: Mango
在开发过程中,我们经常需要将文件转换为字节数组或将字节数组转换为文件。Java提供了很多种不同的方法来实现这一目标。
使用InputStream和ByteArrayOutputStream可以将文件转换为字节数组。具体实现如下:
public static byte[] convertFileToByteArray(String filePath) throws IOException {
byte[] buffer = new byte[8192];
ByteArrayOutputStream output = new ByteArrayOutputStream();
try (InputStream input = new FileInputStream(filePath)) {
int n = 0;
while (-1 != (n = input.read(buffer))) {
output.write(buffer, 0, n);
}
}
return output.toByteArray();
}
代码解析:
使用FileChannel和ByteBuffer可以将文件转换为字节数组。具体实现如下:
public static byte[] convertFileToByteArray(String filePath) throws IOException {
File file = new File(filePath);
long fileSize = file.length();
try (FileChannel channel = new FileInputStream(file).getChannel()) {
ByteBuffer buffer = ByteBuffer.allocate((int) fileSize);
while (channel.read(buffer) > 0) {
// do nothing
}
return buffer.array();
}
}
代码解析:
使用OutputStream和ByteArrayInputStream可以将字节数组转换为文件。具体实现如下:
public static void convertByteArrayToFile(byte[] bytes, String filePath) throws IOException {
try (InputStream input = new ByteArrayInputStream(bytes)) {
try (OutputStream output = new FileOutputStream(filePath)) {
byte[] buffer = new byte[8192];
int n = 0;
while (-1 != (n = input.read(buffer))) {
output.write(buffer, 0, n);
}
}
}
}
代码解析:
使用FileChannel和ByteBuffer可以将字节数组转换为文件。具体实现如下:
public static void convertByteArrayToFile(byte[] bytes, String filePath) throws IOException {
File file = new File(filePath);
try (FileChannel channel = new FileOutputStream(file).getChannel()) {
ByteBuffer buffer = ByteBuffer.wrap(bytes);
channel.write(buffer);
}
}
代码解析:
Java提供了很多种不同的方法来实现文件与字节数组的相互转换。我们可以根据实际情况选择不同的实现方式来达到最佳的性能和效果。