1. 程式人生 > >寫檔案時慎用flush,如何提升效率?

寫檔案時慎用flush,如何提升效率?

        java的io流相當於一個數據流通的管道,這裡面存在一個預設的資料緩衝區,大小是8k,如果快取達到8k,則自動儲存到硬碟檔案或其它儲存裝置檔案中。如果儲存過程中的資料少於8k之後,那麼這時,它就有可能把少於8k的這部分資料快取在緩衝區中,而不寫進儲存裝置裡面,因此,我們呼叫當前io流的flush()方法,清空當前緩衝區,即把資料完整的儲存到檔案中。

        但是對於BufferedWriter而言,如果能保證在寫檔案結束之後,呼叫close也能夠保證檔案能夠寫完,因為close方法中已經實現了flush;

所以不要寫一行資料,就呼叫flush,等到緩衝區達到8k的時候會自動寫入檔案中,這樣可以提高IO效率。

PS:將BufferedWriter定義到try(BufferedWriter writer = new BufferedWriter(new FileWriter(newFile));)裡面,不管是try正常執行結束或者發生異常都能自動釋放資源。