2011-10-09 228 views
1

我正在通過DataOutputStream(RandomAccessFile-> FileOutputStream-> BufferedOutputStream-> DataOutputStream)將信息寫入文件。當緩衝區已滿時,DataOutputStream是否會自動刷新?

我假設如果用於數據輸出的緩衝區已滿,那麼數據輸出流會自動刷新?

我問的原因是我寫的數據在for循環,並在循環後沖洗(我猜在循環的每次迭代後刷新會破壞使用緩衝區的點),以及何時數據變得太大(4MB atm)我的文件沒有正確顯示。

回答

3

DataOutputStream沒有緩衝區,所以沒有什麼可刷新的。一切都寫在write()/writeXXX()方法。然而BufferedOutputStream當然有一個緩衝區,所以你當然需要刷新或關閉才能將數據寫入文件。您需要關閉最外面的流,即在此例中爲DataOutputStream,而不是任何嵌套流。

當數據變得太大(4MB atm)時我的文件沒有正確出來 。

您必須發佈您的代碼。 BufferedOutputStream的緩衝區默認爲8k字節,與4Mb無關。

相關問題