java IO緩衝流高效原理及使用

2021-09-05 10:49:37 字數 1148 閱讀 5444

帶緩衝的位元組輸入流:我們知道檔案位元組輸入流讀取時,是直接從位元組流中讀取的。由於位元組流是與硬體(儲存介質)進行的讀取,所以速度較慢。而cpu需要使用資料時通過read()、read(byte)讀取資料時就要受到硬體io的慢速度限制。我們又知道,cpu與記憶體發生的讀寫速度比硬體io快10倍不止,所以優化讀寫的思路就有了:在記憶體中建立快取區,先把儲存介質中的位元組讀取到快取區中。cpu需要資料時直接從緩衝區讀就行了,緩衝區要足夠大,在被讀完後又觸發fill()函式自動從儲存介質的檔案位元組內容中讀取位元組儲存到緩衝區陣列。

bufferedinputstream 內部有乙個緩衝區,預設大小為8m,每次呼叫read方法的時候,它首先嘗試從緩衝區裡讀取資料,若讀取失敗(緩衝區無可讀資料),則選擇從物理資料來源 (譬如檔案)讀取新資料(這裡會嘗試盡可能讀取多的位元組)放入到緩衝區中,最後再將緩衝區中的內容返回給使用者。由於從緩衝區裡讀取資料遠比直接從儲存介質讀取速度快,所以bufferedinputstream的效率很高。

那bufferedoutputstream就是先把資料寫到緩衝區裡,等到緩衝區滿了再一次性寫到磁碟。這樣就減少了與硬體io的操作,省時不少。

帶緩衝的字元流原理同理。

使用方法:

位元組流:

file file1 = new file(path1);

file file2 = new file(path2);

//輸入輸出檔案流

fileinputstream fis = new fileinputstream(file1);

fileoutputstream fos = new fileoutputstream(file2);

//輸入輸出緩衝流

bufferedinputstream bis = new bufferedinputstream(fis);

bufferedoutputstream bos = new bufferedoutputstream(fos);

字元流:

bufferedreader br=new bufferedreader(new inputstreamreader(system.in));
有沒有覺得像是buffered像個大人似的包著小孩,那跑起來肯定嗖嗖的快啊。

java IO 位元組緩衝流

classname 位元組快取流 為了解決在寫入檔案操作時,頻繁的操作檔案所帶來的效能降低的問題 bufferedoutputstream 內部預設的快取大小時8kb,每次寫入時儲存到的快取中的byte陣列中,當陣列存滿 時,會把陣列中的資料寫入檔案,並且快取下標歸零 description tod...

Java I O (四)緩衝流類

存在著幾種讀取和寫入file的方法,但是通常,最簡便的方法如下所示 該 如下所示 try catch ioexception e1 這裡在afile上建立了乙個filewriter。緩衝編寫比一次只編寫出乙個字元有效。在編寫每個行 用 n符號手工結束 時,可以在bufferedwriter上呼叫fl...

Java IO 學習筆記(緩衝流)

緩衝流 類 bufferedinputstream 和 bufferedoutputstream 實現了帶緩衝的過濾流,它提供了緩衝機制,把任意的 i o 流 到緩衝流上,可以提高 i o 流的讀取效率。在初始化時,除了要指定所連線的 i o 流之外,還可以指定緩衝區的大小。預設時是用32位元組大小...