BufferedWriter中的緩衝區問題

BufferedReader輸入流不需要清空緩衝區,而BufferedWriter需要清空緩衝區。

原因是:當BufferedReader在讀取文本文件時,會先儘量從文件中讀入字符數據並置入緩衝區,而之後若使用read()方法,會先從緩衝區中進行讀取,如果緩衝區數據不足,纔會再從文件中讀取。清不清空BufferedReader的緩衝區都對文件本身沒什麼影響,清了還影響速度。
而對於BufferedWriter而言,如果不清空緩衝區,會出現兩種情況:
第一種:緩衝區滿了,緩衝區裏面的數據會自動進入到目的地中
第二種:緩衝區沒有滿,這個時候又不將數據進行刷新,那麼數據不會自動進入到目的地中

舉一個簡單的例子:
緩衝區的大小爲5,我們現在有6個數據寫入到文件中,第一次,將5個數據寫入緩衝區,緩衝區滿了,就將數據寫入到目的地,緩衝區爲空,又從文件中取數據,這時候緩衝區中只有一個數據,由於沒有任何其他的文件操作,這個時候,最後一個數據無法寫入到文件中,這時候就會出現文件寫入不對的錯誤。這是我自己理解的,希望大家指正。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章