天天看點

java io系列18之 CharArrayReader(字元數組輸入流)

從本章開始,我們開始對java io中的“字元流”進行學習。首先,要學習的是CharArrayReader。學習時,我們先對CharArrayReader有個大緻了解,然後深入了解一下它的源碼,最後通過示例來掌握它的用法。

CharArrayReader 函數清單

java io系列18之 CharArrayReader(字元數組輸入流)
java io系列18之 CharArrayReader(字元數組輸入流)

Reader是CharArrayReader的父類,我們先看看Reader的源碼,然後再學CharArrayReader的源碼。

1. Reader源碼分析(基于jdk1.7.40)

java io系列18之 CharArrayReader(字元數組輸入流)
java io系列18之 CharArrayReader(字元數組輸入流)
java io系列18之 CharArrayReader(字元數組輸入流)

2. CharArrayReader 源碼分析(基于jdk1.7.40)

java io系列18之 CharArrayReader(字元數組輸入流)
java io系列18之 CharArrayReader(字元數組輸入流)
java io系列18之 CharArrayReader(字元數組輸入流)

說明:

CharArrayReader實際上是通過“字元數組”去儲存資料。

(01) 通過 CharArrayReader(char[] buf) 或 CharArrayReader(char[] buf, int offset, int length) ,我們可以根據buf數組來建立CharArrayReader對象。

(02) read()的作用是從CharArrayReader中“讀取下一個字元”。

(03) read(char[] buffer, int offset, int len)的作用是從CharArrayReader讀取字元資料,并寫入到字元數組buffer中。offset是将字元寫入到buffer的起始位置,len是寫入的字元的長度。

(04) markSupported()是判斷CharArrayReader是否支援“标記功能”。它始終傳回true。

(05)

mark(int

readlimit)的作用是記錄标記位置。記錄标記位置之後,某一時刻調用reset()則将“CharArrayReader下一個被讀取的位置”重

置到“mark(int

readlimit)所标記的位置”;也就是說,reset()之後再讀取CharArrayReader時,是從mark(int

readlimit)所标記的位置開始讀取。

關于CharArrayReader中API的詳細用法,參考示例代碼(CharArrayReaderTest.java): 

java io系列18之 CharArrayReader(字元數組輸入流)
java io系列18之 CharArrayReader(字元數組輸入流)

運作結果:

0 : a

1 : b

2 : c

3 : d

4 : e

buf=klmno

buf=fghij