Java™ 教程(緩衝流)

緩衝流

到目前爲止,咱們看到的大多數示例都使用無緩衝的I/O,這意味着每一個讀取或寫入請求都由底層操做系統直接處理,這能夠使程序效率低得多,由於每一個這樣的請求一般觸發磁盤訪問、網絡活動或一些相對昂貴的其餘操做。html

爲了減小這種開銷,Java平臺實現了緩衝的I/O流,緩衝輸入流從稱爲緩衝區的內存區讀取數據,僅當緩衝區爲空時才調用原生輸入API,相似地,緩衝輸出流將數據寫入緩衝區,而且僅在緩衝區已滿時才調用原生輸出API。java

程序能夠使用咱們如今屢次使用的包裝習慣用法將無緩衝的流轉換爲緩衝流,將無緩衝的流對象傳遞給緩衝流類的構造函數,如下是如何修改CopyCharacters示例中的構造函數調用以使用緩衝I/O:segmentfault

inputStream = new BufferedReader(new FileReader("xanadu.txt"));
outputStream = new BufferedWriter(new FileWriter("characteroutput.txt"));

有四個用於包裝無緩衝流的緩衝流類:BufferedInputStreamBufferedOutputStream建立緩衝的字節流,而BufferedReaderBufferedWriter建立緩衝的字符流。api

沖洗緩衝流

在關鍵點寫出緩衝區一般是有意義的,而不是等待它被填滿,這稱爲沖洗緩衝區。網絡

一些緩衝的輸出類支持autoflush,由可選的構造函數參數指定,啓用autoflush時,某些關鍵事件會致使沖洗緩衝區。例如,自動沖洗PrintWriter對象在每次調用printlnformat時沖洗緩衝區,有關這些方法的更多信息,請參閱格式化。oracle

要手動沖洗流,請調用其flush方法,flush方法在任何輸出流上都有效,但除非流被緩衝,不然無效果。函數


上一篇:字符流

下一篇:掃描

相關文章
相關標籤/搜索