我正在尝试使用BufferedInputStream
和BufferedOutputStream
读写大于100 MB的大文件。但是我遇到了堆内存问题和OOM异常。
代码如下:
BufferedInputStream buffIn = new BufferedInputStream(iStream);
/** iStream is the InputStream object **/
BufferedOutputStream buffOut=new BufferedOutputStream(new FileOutputStream(file));
byte []arr = new byte [1024 * 1024];
int available = -1;
while((available = buffIn.read(arr)) > 0) {
buffOut.write(arr, 0, available);
}
buffOut.flush();
buffOut.close();
我的问题是当我们使用 BufferedOutputStreeam
时,它是否会一直占用内存直到整个文件写完?
使用 BufferedOutputStream
写入大文件的最佳方法是什么?
BufferedOutputStream
的意义,并且它对内存使用不会产生任何影响。 - user207421BufferedInputStream
和BufferedOutputStream
都不太可能产生任何影响。它们所做的最好的事情是在数组很大时避免性能下降。它们未使用的8kiB自有字节数组也不太可能造成影响。 - Holger