io中需要flush()刷新的流


只有輸出流才需要flush()刷新,輸入流都沒有flush()方法

  1. 為什么沒有輸入流,因為所有輸入流都沒flush()方法。
    flush()方法是定義在OutputStream和Writer這兩個輸出流的超類里面的方法,這是因為flush方法的作用和功能是向外做輸出,將內存中的數據提交輸出到外部文件當中,在BufferedWriter中,因為是對外做寫操作,因此是有提交輸出的flush方法的;而在BufferedReader對象中,因為它的作用是用來從外部讀取文件內容到內存中,因此不存在向外做提交輸出的操作,因此沒有flush方法。

所以以下的流均包含了flush()方法:
FileOutputStream, 字節流輸出流
FileWriter, 字符輸出流
BufferedOutputStream, 緩沖字節輸出流
BufferedWriter, 緩沖字符輸出流
OutputStreamWriter, 轉換輸出流
ObjectOutputStream 序列化輸出流

只有字節流輸出流FileOutputStream和序列化輸出流ObjectOutputStream不需要flush()就能直接寫入文件
FileWriter字符輸出流,BufferedOutputStream緩沖字節輸出流,BufferedWriter緩沖字符輸出流,OutputStreamWriter轉換輸出流都需要刷新flush方法才能寫到文件上。

所以總結一下:如果是和Writer相關(內置緩沖區)或者是內置了緩沖數組的流都需要flush()這個過程才能寫入文件

但是為了保險起見:以后只要涉及相關輸出流,不論是字節流還是字符流,只要是OutputStream和Writer相關的,都加上flush()保險,
當然如果是直接close()就不用flush()了,但是保不齊以后增加代碼會對數據進行操作,這個時候就容易出問題了


免責聲明!

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



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