JAVA學習——IO操作(四)——緩衝處理流

JAVA學習——IO操作(四)——緩衝處理流


         緩衝處理流包括:BufferedInputStream,BufferedOutputStream,BufferedReader,BufferedWriter。(處理流類均是採用裝飾模式進行設計的)

         BufferedInputStream與BufferedOutputStream是一個帶有緩衝區域的InputStream和Outputstream。通過裝飾器模式將InputStream和Outputstream封裝至內部的一個成員變量。BufferedInputStream和BufferedOutputStream對外提供滑動讀取與輸出的功能實現,通過預先讀入一整段原始輸入流數據至緩衝區中(內部實現爲將每次讀取到的單個字節存儲到一個數組中,然後從數組中一次性讀取數據),而外界對BufferedInputStream和BufferedOutputStream的讀取操作實際上是在緩衝區上進行,如果讀取的數據超過了緩衝區的範圍,那麼BufferedInputStream負責重新從原始輸入流中載入下一截數據填充緩衝區,然後外界繼續通過緩衝區進行數據讀取。這樣的設計的好處是:避免了大量的磁盤IO,因爲原始的InputStream和Outputstream類實現的read和write是即時讀取的,即每一次讀取都會是一次磁盤IO操作(哪怕只讀取了1個字節的數據),可想而知,如果數據量巨大,這樣的磁盤消耗非常可怕。而通過緩衝區的實現,讀取可以讀取緩衝區中的內容,當讀取超過緩衝區的內容後再進行一次磁盤IO,載入一段數據填充緩衝,那麼下一次讀取一般情況下就直接可以從緩衝區讀取,減少了磁盤IO。BufferedInputStream比較常用的幾個方法是:1、available()返回輸入流中估計的字節數。2、read()返回一個流中的一個字節。3、read(byte[],int,int)從此字節輸入流中給定偏移量處開始將各字節讀取到指定的 byte 數組中。BufferedOutputStream比較常用的幾個方法是1、flush()刷新緩衝的輸出流。2、write(int)將指定的字節寫入輸出流。3、write(byte[],int,int)從此字節輸出流中給定偏移量處開始將各字節寫入到指定的 byte 數組中。

         BufferedReader和BufferedWriter實現緩衝的原理和BufferedInputStream與BufferedOutputStream相似,區別是BufferedReader和BufferedWriter是針對對字符流的而不是字節流。BufferedReader最爲重要的功能是readline()該方法一次可從輸入流中讀取一行,並返回改行內容。


發佈了43 篇原創文章 · 獲贊 12 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章