我們清楚操作檔案資料使用緩衝陣列讀取效率更高,sun公司給我們提供了乙個緩衝位元組流,可以讓我們更高效率操作檔案
緩衝輸入位元組流:
----------------------| inputstream 輸入位元組流的基類
----------------| fileinputstream 讀取檔案的輸入位元組流
----------------| bufferedinputstream 緩衝輸入位元組流 作用:提高讀取檔案的效率
注意:bufferedinputstream其實底層建立了乙個8kb的位元組陣列,跟我們自定義建立乙個位元組陣列實現原理一樣的
構造方法:
bufferedinputstream(inputstream in) 建立乙個 bufferedinputstream 並儲存其引數,即輸入流 in,以便將來使用。
bufferedinputstream(inputstream in, int size) 建立具有指定緩衝區大小的 bufferedinputstream 並儲存其引數,即輸入流 in,以便將來使用。
緩衝輸出位元組流:
----------------------| outputstream 輸出位元組流的基類
----------------| fileoutputstream 寫入檔案的輸入位元組流
----------------| bufferedoutputstream 緩衝輸出位元組流 作用:提高我們寫入資料的效率
注意:bufferedoutputstream底層也是建立了乙個8kb的位元組陣列,當我們在使用write方法的時候,資料其實存在了位元組陣列中,並沒有寫入檔案中
當我們關閉檔案,或者使用flush方法,或則位元組陣列存滿,才會把資料寫入檔案中
構造方法:
bufferedoutputstream(outputstream out) 建立乙個新的緩衝輸出流,以將資料寫入指定的底層輸出流。
bufferedoutputstream(outputstream out, int size) 建立乙個新的緩衝輸出流,以將具有指定緩衝區大小的資料寫入指定的底層輸出流。
成員函式:
flush() 重新整理此緩衝的輸出流(也就是把位元組陣列中的資料寫入檔案中)。
注意:緩衝位元組流本身並不具備讀寫檔案能力
最後講解一下容易混淆的一些函式(能力有限,可能說的不夠明確):
fileinputstream.read(buf) 返回每次讀取資料的長度,沒有則返會-1
fileinputstream.read() 返回的是每次讀取的資料,沒有則返會-1
bufferedinputstream.read() 當讀取到資料返回的是底層字元陣列的資料,當沒有讀取到資料,會返回-1
bufferedinputstream.read(buf) 返回的是快取到快取陣列中的位元組總數(這個是父類的方法)當沒有讀取到資料,會返回-1
publicclass
demo1
}catch
(ioexception e)
finally
catch
(ioexception e)
finally
catch
(ioexception e) }}
}}
網路位元組流和主機位元組流
位元組流分為兩類 little edition le big edition be 0x123456 在兩種位元組流中的儲存方式 位址 le be 0x0000 56 12 0x0001 34 34 0x0002 12 56 主機位元組流根據cpu型別而定 網路位元組流採用be格式 為了進行轉換 b...
位元組流應用
位元組流的一些用法 將位元組流檔案放入乙個緩衝區直接讀出 public static void readfile3 throws ioexception 將位元組檔案讀取到位元組緩衝區 public static void readfile2 throws ioexception fis.close...
位元組流InputStream
位元組流 一次性傳輸乙個位元組,其基類是inputstream和outputstream,但是這兩個類不能直接使用,因為他們是基類。inputstream和outputstream inputstream方法 1.read 從位元組流當中讀取資料,其中方法 read 中提供了三種過載的讀取資料的方法...