是否可以将所有字节从文件存储到字节数组?

时间:2014-10-16 11:42:30

标签: java arrays memory bytearray

就像标题一样,是否可以将所有字节从文件存储到字节数组而不会出现java堆空间错误?

2 个答案:

答案 0 :(得分:1)

是的,您可以使用IOUtils.toByteArray(InputStream input)  存储它。

另外,如果它是一个大文件,你可以通过使用vm参数执行它来增加java堆空间:

java -Xmx6g myprogram

java -jar -Xmx6g myprogram.jar

6g表示6 GB的堆

答案 1 :(得分:0)

正如assylias所建议的那样,使用Files.readAllBytes(path)使用Java的100%方法。

堆空间错误取决于JVM堆中的文件大小和可用内存量;您需要先确认第一个比第二个低,然后再阅读:

File file = new File(path);
bytes[] bytes;
if (file.length > Runtime.getRuntime().freeMemory()) {
    // warn about reading
} else {
    bytes = Files.readAllBytes(path)
    // do stuff with 'bytes'
}