Java IO 學習筆記(緩衝流)

2021-08-08 07:40:07 字數 1587 閱讀 5227

緩衝流:

類 bufferedinputstream 和 bufferedoutputstream 實現了帶緩衝的過濾流,它提供了緩衝機制,把任意的 i/o 流「**」到緩衝流上,可以提高 i/o 流的讀取效率。

在初始化時,除了要指定所連線的 i/o 流之外,還可以指定緩衝區的大小。預設時是用32位元組大小的緩衝區;最優的緩衝區大小常依賴於主機作業系統、可使用的記憶體空間以及機器的配置等;一般緩衝區的大小為記憶體頁或磁碟塊等的整數倍。

bufferedinputstream 的資料成員 buf 是乙個位陣列,預設為2048位元組。當讀取資料**時例如檔案,bufferedinputstream 會盡量將 buf 填滿。當使用 read ()方法時,實際上是先讀取 buf 中的資料,而不是直接對資料**作讀取。當 buf 中的資料不足時,bufferedinputstream 才會再實現給定的 inputstream 物件的 read() 方法,從指定的裝置中提取資料。

bufferedoutputstream 的資料成員 buf 是乙個位陣列,預設為512位元組。當使用 write() 方法寫入資料時,實際上會先將資料寫至 buf 中,當 buf 已滿時才會實現給定的 outputstream 物件的 write() 方法,將 buf 資料寫至目的地,而不是每次都對目的地作寫入的動作。   

構造方法:

//

[ ]裡的內容代表選填

bufferedinputstream(inputstream in[,int

size])

bufferedoutputstream(outputstream out[,

int size])

舉個例子,將緩衝流與檔案流相接:

fileinputstream in = new fileinputstream("file.txt");

fileoutputstream out = new fileoutputstream("file2.txt");

//設定輸入緩衝區大小為256位元組

bufferedinputstream bin = new bufferedinputstream(in,256)

bufferedoutputstream bout = new bufferedoutputstream(out,256)

intlen;

byte barray = new

byte[256];

len = bin.read(barray); //

len 中得到的是實際讀取的長度,barray 中得到的是資料

對於 bufferedoutputstream,只有緩衝區滿時,才會將資料真正送到輸出流,但可以使用 flush() 方法人為地將尚未填滿的緩衝區中的資料送出。

public

void copy(inputstream in, outputstream out) throw

ioexception

//最後一次讀取得資料可能不到4096位元組

out.flush();

}

java IO 位元組緩衝流

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

Java I O (四)緩衝流類

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

java IO流 帶緩衝的字元流

bufferedreader的read 方法讀取字元時會一次讀取若干字元到緩衝區,然後逐個返回給程式,降低讀取檔案的次數,提高效率 bufferedwriter的write 方法寫出字元時會先寫到緩衝區,緩衝區寫滿時才會寫到檔案,降低寫檔案的次數,提高效率 bufferedreader br new...