我正在嘗試使用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