我有一个大文件,预计大约 12 GB。我想将它全部加载到具有 16 GB RAM 的强大 64 位机器上的内存中,但我认为 Java 不支持那么大的字节数组:
File f = new File(file);
long size = f.length();
byte data[] = new byte[size]; // <- does not compile, not even on 64bit JVM
Java 可以吗?
Eclipse 编译器的编译错误是:
Type mismatch: cannot convert from long to int
javac 给出:
possible loss of precision
found : long
required: int
byte data[] = new byte[size];
最佳答案
Java 数组索引的类型为 int
(4 字节或 32 位),所以恐怕您仅限于 231 - 1 或 2147483647 个插槽你的阵列。我会将数据读入另一个数据结构,比如二维数组。
关于具有超过 4gb 元素的 Java 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/878309/