【发布时间】:2012-02-22 15:15:17
【问题描述】:
我有一个 ByteArrayOutputStream 对象,我收到以下错误:
java.lang.ArrayIndexOutOfBoundsException at
java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:113)
我正在尝试通过一次写入一个 250mb 的 byte[] 块来加载一个有几个 gig 的文件。
我可以看到字节的大小在增长,一旦它达到长度 2147483647,即 int 的上限,它就会在以下行爆炸:
stream.write(buf);
stream 是 ByteArrayOutputStream,buf 是我以 250mb 块写入流的内容。
本来打算做的
byte result[] = stream.toByteArray();
最后。我可以尝试其他一些方法来支持大于 int 上限的字节数组大小吗?
【问题讨论】:
-
提个建议:不要在内存中存储那么大的数组。你真的需要一次记住所有这些演出吗?
-
你真的需要超过 640K 吗?
-
注意:考虑过大型数组的提议,但没有进入 Java 7。也许我们会在 Java 8 中看到它?
-
如果你有一台 64G 内存的机器用于运行科学实验,而你的数据是 30G,那么将所有内容加载到内存中是很有意义的——它几乎总是会导致节省大量时间。
标签: java byte bytearrayoutputstream