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
|