当我使用非常大的文件时,错误发生在内存中,无法解决此问题,或者为什么不在下面的代码中发生?
ByteArrayOutputStream baos = new ByteArrayOutputStream();
//10*1024 = 10KB
byte[] byteBuffer = new byte[20*2048];
int i = Integer.MAX_VALUE;
while ((i = is.read(byteBuffer, 0, byteBuffer.length)) > 0) {
baos.write(byteBuffer, 0, i);
}
return baos.toByteArray();
答案 0 :(得分:1)
ByteArrayOutputStream定义“用于将内容写入(内部)字节数组的类的专用OutputStream。当字节写入此流时,字节数组可以扩展为容纳更多字节。写入被认为已完成,可以从类中请求字节数组的副本。“
您正在将Integer.MAX_VALUE * 10240字节写入内存。
您可能希望将标题更改为“写入内存中的内存流时内存不足”