从本章开始,我们开始对java io中的“字符流”进行学习。首先,要学习的是CharArrayReader。学习时,我们先对CharArrayReader有个大致了解,然后深入了解一下它的源码,最后通过示例来掌握它的用法。
CharArrayReader 函数列表


Reader是CharArrayReader的父类,我们先看看Reader的源码,然后再学CharArrayReader的源码。
1. Reader源码分析(基于jdk1.7.40)


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


说明:
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):


运行结果:
0 : a
1 : b
2 : c
3 : d
4 : e
buf=klmno
buf=fghij