文
章
目
录
章
目
录
在Java中,将文件读取为byte[]字节数组经常会被用到,例如通过网络传递信息以及通过其他API进行进一步处理。以下是一些在Java中从文件读取数据到字节数组的方法:
1.使用Files.readAllBytes()
Files.readAllBytes()
是适用于Java 7、8及更高版本的最佳方法。它会读取文件的所有字节并关闭文件。文件也会在发生I/O错误或抛出其他运行时异常时关闭。
请注意,此方法会在一条语句中将所有字节读入内存,因此不要用于读取大文件,否则可能会遇到OutOfMemoryError
。
Path path = Paths.get("C:/temp/test.txt");
byte[] data = Files.readAllBytes(path);
2.使用FileInputStream
使用FileInputStream
来读取文件的内容,当您已经拥有InputStream引用时。不要忘记在读取完成后关闭流,或者使用try-with-resources块。
File file = new File("C:/temp/test.txt");
byte[] bytes = new byte[(int) file.length()];
try(FileInputStream fis = new FileInputStream(file)) {
fis.read(bytes);
}
3.使用Apache Commons IO
另一种将数据读取到字节数组中的好方法是使用Apache Commons IO库。它提供了用于处理IO操作的几个有用的类。
在以下示例中,我们使用FileUtils类将文件内容读取到字节数组中。文件无论成功还是读取错误都会被关闭。
byte[] bytes = FileUtils.readFileToByteArray(file);
还有一个类叫做IOUtils,可以以相同的方式使用。
byte[] bytes = IOUtils.toByteArray(new FileInputStream(file));
4.使用Guava
将数据读取到字节数组的另一种好方法是使用Google Guava库。
以下示例使用com.google.common.io.Files
类将文件内容读取到字节数组中。
根据您的需求,您可以选择上述任何方法来将文件内容读取为字节数组。
byte[] bytes3 = com.google.common.io.Files.toByteArray(file);