IO Streams:缓冲流
我們迄今為止看到的大多數(shù)示例都使用無(wú)緩沖的I / O。這意味著每個(gè)讀或?qū)懻?qǐng)求都由底層操作系統(tǒng)直接處理。這使程序效率變得很低,因?yàn)槊總€(gè)這樣的請(qǐng)求經(jīng)常觸發(fā)磁盤(pán)訪問(wèn),網(wǎng)絡(luò)活動(dòng)或一些相對(duì)昂貴的其他操作。?
為了減少這種開(kāi)銷(xiāo),Java平臺(tái)實(shí)現(xiàn)了緩沖的I / O流。緩沖輸入流從稱(chēng)為緩沖區(qū)的存儲(chǔ)區(qū)讀取數(shù)據(jù);僅當(dāng)緩沖區(qū)為空時(shí)才調(diào)用本地輸入API。類(lèi)似地,緩沖輸出流將數(shù)據(jù)寫(xiě)入緩沖區(qū),僅當(dāng)緩沖區(qū)已滿時(shí)才調(diào)用本地輸出API。 程序可以使用我們已經(jīng)使用過(guò)多次的包裝習(xí)慣將無(wú)緩沖流轉(zhuǎn)換為緩沖流,其中將無(wú)緩沖流對(duì)象傳遞給緩沖流類(lèi)的構(gòu)造函數(shù)。以下是如何使用緩沖I / O的構(gòu)造函數(shù)修改CopyCharacters的示例:
inputStream = new BufferedReader(new FileReader("xanadu.txt")); outputStream = new BufferedWriter(new FileWriter("characteroutput.txt"));有四個(gè)緩沖流類(lèi)用于包裝無(wú)緩沖流:BufferedInputStream和BufferedOutputStream創(chuàng)建緩沖字節(jié)流,而B(niǎo)ufferedReader和BufferedWriter創(chuàng)建緩沖字符流。
在關(guān)鍵點(diǎn)寫(xiě)出緩沖區(qū)通常是有意義的,而無(wú)需等待填充,這被稱(chēng)為沖洗緩沖區(qū)。
?一些緩沖輸出類(lèi)支持自動(dòng)刷新,由可選的構(gòu)造函數(shù)參數(shù)指定。啟用自動(dòng)清洗時(shí),某些關(guān)鍵事件會(huì)導(dǎo)致緩沖區(qū)被刷新。例如,一個(gè)自動(dòng)刷新的PrintWriter對(duì)象在每次調(diào)用println或格式時(shí)刷新緩沖區(qū)。有關(guān)這些方法的更多信息,請(qǐng)參閱格式。 要手動(dòng)刷新流,請(qǐng)調(diào)用其flush方法。 flush方法對(duì)任何輸出流都有效,但是除非流被緩沖,否則不起作用。
轉(zhuǎn)載于:https://www.cnblogs.com/hhx626/p/8320412.html
總結(jié)
以上是生活随笔為你收集整理的IO Streams:缓冲流的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Java爬取校内论坛新帖
- 下一篇: [Spark][Hive][Python