就像标题一样,是否可以将所有字节从文件存储到字节数组而不会出现java堆空间错误?
答案 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'
}