程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> IO流,javaio流學習總結

IO流,javaio流學習總結

編輯:JAVA綜合教程

IO流,javaio流學習總結


流分輸入流和輸出流,其基本操作分別是讀取和寫入。

流分字節流和字符流,其操作數據分別是字節和字符。

字節流的基類:InputStream,OutputStream。

字符流的基類:Reader,Writer。

流分源頭流和非源頭流(嵌套流),其區別在於該流是否可以獨立使用,源頭流是可以獨立使用的流,而非源頭流是需要有源頭流才能使用。下圖表示出了有那些源頭流。

如何認識這些流,個人覺得分六個方面認識:源頭所需性能優化操作強化數據過濾多源控制狀態記錄

源頭所需而存在的流有:

  • ByteArray + InputStream/OutputStream
  • CharArray + Reader/Writer
  • String + Reader/Writer
  • File + Reader/Writer
  • Piped + InputStream/OutputStream/Reader/Writer

性能優化的流主要是緩存,擁有緩存的流有:

  • Buffered + InputStream/OutputStream/Reader/Writer
  • LineNumberReader

操作強化是指在基本操作的基礎上,增加了可以直接讀取或寫入實際數據的類型,擁有操作強化的流有:

  • Buffered + Reader/Writer
  • Print + Stream/Writer
  • Data + InputStream/OutputStream
  • Object + InputStream/OutputStream

數據過濾是指數據從一端流向另一端的過程中進行轉換,統計,添加,刪減,裝飾等操作,數據過濾的流有:

  • InputStreamReader:把字節轉化為字符的流。
  • OuputStreamWriter:把字符轉化為字節的流。
  • File + Reader/Writer:字節與字符間的轉換。
  • LineNumberReader:累計換行符的次數,即可以獲取或改變當前操作的行號。

多源控制是指流不止一個數據源,一般多源是輸入流才有這樣的需求,擁有多源的流有:

  • SequenceInputStream:從第一個源開始讀取,當讀取完畢時,再向第二個源讀取,以此順序讀取。
  • Pushback + InputStream/Reader:流一般是單向,不可逆。此流雖然可逆,但只是流向他自身的一個逆緩存。讀取操作時,需要先把逆緩存的數據讀取完畢,才能正式讀取源。

流的基類裡都帶有狀態記錄所需的方法,分別是:markSupported,mark和reset。但並不是所有流都支持狀態記錄,markSupported返回布爾值就是告訴操作者,該流是否支持狀態記錄。

一般擁有緩存的流都支持狀態記錄,而部份非源頭流是否支持是依賴於其源的支持。緩存流會把開始記錄的數據一直存放在緩存裡面,直到緩存數據的長度超出一個數值,這個數值是在調用方法mark時,傳入的一個int數值,超出之後就無法回檔。調用reset方法,就是把狀態回檔,使流從記錄地方開使操作。

Filter + InputStream/OutputStream/Reader/Writer,這個流是提供給用戶自定義流的模板,實現了其狀態記錄的支持是依賴於源。

 

本文原創!待續更新!

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved