我正在尝试使用BufferedInputStream
& BufferedOutputStream
读取和写入大文件(大于100 MB)。我得到堆内存问题& OOM异常。
代码如下:使用BufferedOutputStream写入大文件
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
编写大文件的最佳方法是什么?
尝试在循环内部冲洗 – 2012-02-24 04:23:53
它缓冲,直到你刷新它。在while循环中刷新它。 – 2012-02-24 04:24:32
@jcomeau_ictx - no,BufferedOutputStream在刷新之前不会缓冲,它有一个固定的内部缓冲区大小。喝酒时不应张贴 – jtahlborn 2012-02-24 04:46:18