CharArrayReader
CharArrayReader 是字符數組輸入流。它和ByteArrayInputStream類似,只不過ByteArrayInputStream是字節數組輸入流,而CharArray是字符數組輸入流。CharArrayReader 是用于讀取字符數組,它繼承于Reader。操作的數據是以字符為單位!
CharArrayReader 函數列表:
1
2
3
4
5
6
7
8
9
10
11
|
CharArrayReader(char[] buf) CharArrayReader(char[] buf, int offset, int length) void close() void mark(int readLimit) boolean markSupported() int read() int read(char[] buffer, int offset, int len) boolean ready() void reset() long skip(long charCount) |
示例代碼:
關于CharArrayReader中API的詳細用法,參考示例代碼(CharArrayReaderTest.java):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
import java.io.CharArrayReader; import java.io.CharArrayWriter; import java.io.IOException; public class CharArrayReaderTest { private static final int LEN = 5 ; // 對應英文字母“abcdefghijklmnopqrstuvwxyz” private static final char [] ArrayLetters = new char [] { 'a' , 'b' , 'c' , 'd' , 'e' , 'f' , 'g' , 'h' , 'i' , 'j' , 'k' , 'l' , 'm' , 'n' , 'o' , 'p' , 'q' , 'r' , 's' , 't' , 'u' , 'v' , 'w' , 'x' , 'y' , 'z' }; public static void main(String[] args) { tesCharArrayReader() ; } /** * CharArrayReader的API測試函數 */ private static void tesCharArrayReader() { try { // 創建CharArrayReader字符流,內容是ArrayLetters數組 CharArrayReader car = new CharArrayReader(ArrayLetters); // 從字符數組流中讀取5個字符 for ( int i= 0 ; i<LEN; i++) { // 若能繼續讀取下一個字符,則讀取下一個字符 if (car.ready() == true ) { // 讀取“字符流的下一個字符” char tmp = ( char )car.read(); System.out.printf( "%d : %c\n" , i, tmp); } } // 若“該字符流”不支持標記功能,則直接退出 if (!car.markSupported()) { System.out.println( "make not supported!" ); return ; } // 標記“字符流中下一個被讀取的位置”。即--標記“f”,因為因為前面已經讀取了5個字符,所以下一個被讀取的位置是第6個字符” // (01), CharArrayReader類的mark(0)函數中的“參數0”是沒有實際意義的。 // (02), mark()與reset()是配套的,reset()會將“字符流中下一個被讀取的位置”重置為“mark()中所保存的位置” car.mark( 0 ); // 跳過5個字符。跳過5個字符后,字符流中下一個被讀取的值應該是“k”。 car.skip( 5 ); // 從字符流中讀取5個數據。即讀取“klmno” char [] buf = new char [LEN]; car.read(buf, 0 , LEN); System.out.printf( "buf=%s\n" , String.valueOf(buf)); // 重置“字符流”:即,將“字符流中下一個被讀取的位置”重置到“mark()所標記的位置”,即f。 car.reset(); // 從“重置后的字符流”中讀取5個字符到buf中。即讀取“fghij” car.read(buf, 0 , LEN); System.out.printf( "buf=%s\n" , String.valueOf(buf)); } catch (IOException e) { e.printStackTrace(); } } } |
運行結果:
1
2
3
4
5
6
7
|
0 : a 1 : b 2 : c 3 : d 4 : e buf=klmno buf=fghij |
CharArrayWriter
CharArrayReader 用于寫入數據符,它繼承于Writer。操作的數據是以字符為單位!
CharArrayWriter 函數列表
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
CharArrayWriter() CharArrayWriter(int initialSize) CharArrayWriter append(CharSequence csq, int start, int end) CharArrayWriter append(char c) CharArrayWriter append(CharSequence csq) void close() void flush() void reset() int size() char[] toCharArray() String toString() void write(char[] buffer, int offset, int len) void write(int oneChar) void write(String str, int offset, int count) void writeTo(Writer out) |
示例代碼:
關于CharArrayWriter中API的詳細用法,參考示例代碼(CharArrayWriterTest.java):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
import java.io.CharArrayReader; import java.io.CharArrayWriter; import java.io.IOException; public class CharArrayWriterTest { private static final int LEN = 5 ; // 對應英文字母“abcdefghijklmnopqrstuvwxyz” private static final char [] ArrayLetters = new char [] { 'a' , 'b' , 'c' , 'd' , 'e' , 'f' , 'g' , 'h' , 'i' , 'j' , 'k' , 'l' , 'm' , 'n' , 'o' , 'p' , 'q' , 'r' , 's' , 't' , 'u' , 'v' , 'w' , 'x' , 'y' , 'z' }; public static void main(String[] args) { tesCharArrayWriter() ; } /** * CharArrayWriter的API測試函數 */ private static void tesCharArrayWriter() { try { // 創建CharArrayWriter字符流 CharArrayWriter caw = new CharArrayWriter(); // 寫入“A”個字符 caw.write( 'A' ); // 寫入字符串“BC”個字符 caw.write( "BC" ); //System.out.printf("caw=%s\n", caw); // 將ArrayLetters數組中從“3”開始的后5個字符(defgh)寫入到caw中。 caw.write(ArrayLetters, 3 , 5 ); //System.out.printf("caw=%s\n", caw); // (01) 寫入字符0 // (02) 然后接著寫入“123456789” // (03) 再接著寫入ArrayLetters中第8-12個字符(ijkl) caw.append( '0' ).append( "123456789" ).append(String.valueOf(ArrayLetters), 8 , 12 ); System.out.printf( "caw=%s\n" , caw); // 計算長度 int size = caw.size(); System.out.printf( "size=%s\n" , size); // 轉換成byte[]數組 char [] buf = caw.toCharArray(); System.out.printf( "buf=%s\n" , String.valueOf(buf)); // 將caw寫入到另一個輸出流中 CharArrayWriter caw2 = new CharArrayWriter(); caw.writeTo(caw2); System.out.printf( "caw2=%s\n" , caw2); } catch (IOException e) { e.printStackTrace(); } } } |
運行結果:
1
2
3
4
|
caw=ABCdefgh0123456789ijkl size=22 buf=ABCdefgh0123456789ijkl caw2=ABCdefgh0123456789ijkl |