Java 输入输出相关概念介绍(File、IO 流)(十三)(CharArrayReader)

160 阅读3分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第13天,点击查看活动详情

上一篇文章Java 输入输出相关概念介绍(File、IO 流)(十二)(BufferedReader) 讲了Reader 的一个实现类:BufferedReader,这篇文章我们继续讲Reader 的子类:CharArrayReader。

CharArrayReader 的概念

对于CharArrayReader 类,我们从名字就可以看得出来,它是“字符数组输入流”,作用和名字解释一致,就是用于读取字符数组。

它继承于Reader,所以操作的数据也是以字符为单位的,所以也具有字符流的通用特性及方法功能。

CharArrayReader 的方法

构造方法

// 在给定从中读取数据的 File 的情况下创建一个新FileReader。
FileReader(File file)
// 在给定从中读取数据的 FileDescriptor 的情况下创建一个新FileReader
FileReader(FileDescriptor fd)
FileReader(String fileName)   //在给定从中读取数据的文件名的情况下创建一个新FileReader。

其他方法

// 这个方法所有数据流都会用到的,作用就是关闭流,释放资源,为了强调一些这个方法的重要性,这里再说一次
void close()
// 返回这个流使用的字符编码的名称
String getEncoding()
// 读取单个字符(返回值是读入字符对应的int 值,范围0~65535)
int read()
// 将字符读入数组,按照参数,置入数组中的某一部分。返回读入字符的个数
int read(char[] cbuf, int offset, int length)

方法具体解释

  • 对于创建CharArrayReader,我们可以使用这两个构造方法:CharArrayReader(char[] buf) 或 CharArrayReader(char[] buf, int offset, int length)。也即我们可以根据buf 数组来创建CharArrayReader对象。
  • read() 方法的作用是从CharArrayReader 中读取“下一个字符”。
  • read(char[] buffer, int offset, int len) 的作用就是从CharArrayReader 中读取字符数据,读出之后写入到字符数组参数buffer 中。offset 和len 两个参数代表的就是将字符写入到buffer 数组的起始位置和字符的长度。
  • mark(int readlimit) 的作用和其他类的作用几乎一致,就是记录标记位置。记录标记位置完成之后,在某一时刻调用reset() 函数,就会将CharArrayReader 下一个被读取的位置转到mark(int readlimit) 所标记的位置。通过mark 函数和reset 函数的配合,可以对一段数据进行多次读取。
  • markSupported()用来对CharArrayReader 是否支持“标记功能”进行判断。在CharArrayReader 中它始终返回true。

总结

CharArrayReader 实际上是通过字符数组来保存数据,这也是CharArrayReader 的一个最主要的特点。

这篇文章我们介绍了CharArrayReader 的概念及各个方法的作用,我们发现,在学习完InputStream 之后,相关的输入流的思想已经被印在了我们的脑海中,在学习Raader 的时候并不会太费力。这也是我们希望达到的效果。

之后的文章会继续介绍Reader 的另外的实现类。