關於java輸出流中flush方法的用法


在java開發中,有時我們會進行流的操作,所以可能會經常遇到這樣一段代碼

out.flush();  
out.close(); 

  有時我們只是大概看懂這些,卻不知道其中的原理性東西,下面就來理解一下:

      flush()這個函數是清空的意思,用於清空緩沖區的數據流,進行流的操作時,數據先被讀到內存中,然后再用數據寫到文件中,那么當你數據讀完時,我們如果這時調用close()方法關閉讀寫流,這時就可能造成數據丟失,為什么呢,因為,讀入數據完成時不代表寫入數據完成,一部分數據可能會留在緩存區中。

為了防止過於頻繁的寫操作 所以Java提供了一個java.io.BufferedOutputStream類 內部持有一個緩沖區 默認不直接將數據寫到硬盤上 而是存到緩沖區中 直到一定條件后觸發(就是調用上面的flushBuffer()了) 也可以強制通過flush()方法提前觸發。

所以當你認為你完成了某一個比較重要的操作的時候 最好進行一次flush 防止數據在內存中丟失。

多數時候,如果你最后會調用一次close方法,flush方法是可以不使用的,除非你明確的想使數據盡早寫到磁盤或者網絡上。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM