如何在Java中将文件转换为字节数组
时间:2020-01-09 10:35:29 来源:igfitidea点击:
这篇文章展示了使用Java将文件转换为字节数组的不同方法。
- 我们可以使用FileInputStream类的read(byte [] b)方法,该方法从此输入流中读取最多b.length个字节的数据到字节数组中。参见示例。
- 从Java 7开始,我们可以使用Files.readAllBytes()方法从文件读取所有字节并返回字节数组。参见示例。
- Apache CommonsIO还具有方法IOUtils.toByteArray和FileUtils.readFileToByteArray将文件转换为字节数组。要使用它,我们必须将CommonsIO jar放入项目的类路径中。参见示例。
Java程序将文件转换为字节数组
让我们看一下使用上述选项在Java中将文件转换为字节数组的示例。
使用FileInputStream类的read方法
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Arrays;
public class FileToBytearray {
public static void main(String[] args) {
File file = new File("D:\test.txt");
byte[] bArray = convertFileToByteArray(file);
System.out.print(Arrays.toString(bArray));
}
private static byte[] convertFileToByteArray(File file){
FileInputStream fis = null;
// Creating bytearray of same length as file
byte[] bArray = new byte[(int) file.length()];
try{
fis = new FileInputStream(file);
// Reading file content to byte array
fis.read(bArray);
fis.close();
}catch(IOException ioExp){
ioExp.printStackTrace();
}finally{
if(fis != null){
try {
fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return bArray;
}
}
输出:
[49, 48, 48, 49, 124, 49, 48, 48, 51, 124, 50, 48, 48, 48, 13, 10, 49, 48, 48, 54, 124, 50, 48, 48, 52, 124, 51, 48, 48, 48, 13, 10, 49, 48, 48, 53, 124, 49, 48, 48, 55, 124, 49, 48, 48, 48, 48, 13, 10, 84, 104, 105, 115, 32, 105, 115, 32, 97, 32, 116, 101, 115, 116, 32, 108, 105, 110, 101, 46, 10, 76, 105, 110, 101, 32, 119, 114, 105, 116, 116, 101, 110, 32, 98, 121, 32, 74, 97, 118, 97, 32, 112, 114, 111, 103, 114, 97, 109, 32, 105, 110, 32, 107, 110, 112, 67, 111, 100, 101, 46, 99, 111, 109, 46]
如我们所见,输出是一系列字节。
使用Files.readAllBytes()方法将文件转换为字节数组
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Arrays;
public class FileToBytearray {
public static void main(String[] args) {
Path path = Paths.get("D:\test.txt");
try {
byte[] bArray = Files.readAllBytes(path);
System.out.println(Arrays.toString(bArray));
} catch (IOException e) {
System.out.println("Error while converting " + e.getMessage());
}
}
}
使用Apache CommonsIO实用程序方法
如前所述,如果使用Apache CommonsIO,可以使用两种方法将文件转换为字节数组。
- IOUtils.toByteArray –此方法将FileInputStream对象作为参数。
- FileUtils.readFileToByteArray –将File实例作为参数传递。
使用IOUtile.toByteArray
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Arrays;
import org.apache.commons.io.IOUtils;
public class FileToBytearray {
public static void main(String[] args) {
File file = new File("D:\test.txt");
try(FileInputStream fis = new FileInputStream(file)) {
byte[] bArray;
bArray = IOUtils.toByteArray(fis);
System.out.println(Arrays.toString(bArray));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
使用FileUtils.readFileToByteArray
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import org.apache.commons.io.FileUtils;
public class FileToBytearray {
public static void main(String[] args) {
File file = new File("D:\test.txt");
byte[] bArray;
try {
bArray = FileUtils.readFileToByteArray(file);
System.out.println(Arrays.toString(bArray));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

