欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

為什么關閉一個緩沖區輸出流之前應使用flush方法

林雅南2年前16瀏覽0評論

為什么關閉一個緩沖區輸出流之前應使用flush方法?

首先 解釋下這個flush的作用這個是java.io.OutputStream的 空實現(java.io.FileOutputStream使用的是java.io.OutputStream的實現 java.net.SocketOutputStream也是一樣)

這個是java.io.BufferedOutputStream的為了防止過于頻繁的寫操作 所以Java提供了一個java.io.BufferedOutputStream類 內部持有一個緩沖區 默認不直接將數據寫到硬盤上 而是存到緩沖區中 直到一定條件后觸發(就是調用上面的flushBuffer()了) 也可以強制通過flush()方法提前觸發所以當你認為你完成了某一個比較重要的操作的時候 最好進行一次flush 防止數據在內存中丟失========================以下是題外話=============================以上全部都是在語言層面上做出的優化 實際運行中 操作系統也會做優化 并不是實際調用了write方法 數據就會落到硬盤上 因為操作系統有IO緩存 所以保證數據真正落地的方法不僅僅是調用flush 還要調用java.io.FileDescriptor#sync()方法 這個方法是本地方法 我沒看實現 不過應該就跟下面這個鏈接里說的是一回事文件I/O編程之sync、fsync和fdatasync函數

java 緩沖區,為什么關閉一個緩沖區輸出流之前應使用flush方法