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

233 阅读3分钟

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

上一篇文章介绍的是Writer 类的一个常用实现类FileWriter,FileWriter 在我们和文件进行交互的时候常用的类。这篇文章我们来介绍Writer 类的另一个子类:CharArrayReader

CharArrayWriter 的概念

CharArrayWriter 的含义是“字符数组输出流”,它继承于Writer,也具有Writer 的相关特性。CharArrayWriter 是以数组作为目标的输出流。

  • CharArrayWriter 内部有个buf 数组,通过CharArrayWriter() 构造方法创建的CharArrayWriter 实例默认buf 数组大小为32。
  • 通过CharArrayWriter(int initialSize) 构造方法就可以指定创建的buf 数组的大小。

CharArrayWriter 的方法

构造方法

CharArrayWriter()
CharArrayWriter(int initialSize)

CharArrayWriter 可以使用这两个构造函数。对于无参构造函数,默认内部buf 数组大小为32;如果指定buf 数组大小,那么就以传入的参数为准。

其他方法

CharArrayWriter append(CharSequence csq, int start, int end)
// 方法的作用将字符写入到CharArrayWriter 实例中,然后再将CharArrayWriter 实例返回
CharArrayWriter append(char c)
// 功能同上
CharArrayWriter append(CharSequence csq)
// 功能是将参数csq 从start 位置开始到end结束的数据写入到CharArrayWriter 实例中
CharArrayWriter append(CharSequence csq, int start, int end)
// 关闭流,释放资源
void close()
// 功能同append 方法,区别就是write 方法返回的是void
void write(char[] buffer, int offset, int len)
void write(int oneChar)
void write(String str, int offset, int count)
// 将这个输出流的数据全部写入到参数"out" 输出流中
void writeTo(Writer out)

使用举例

public static void main(String[] args) throws IOException {
  char[] charArray = new char[]{'a','b','c','d','e','f','g'};
  CharArrayReader charArrayReader = new CharArrayReader(charArray);
  CharArrayWriter charArrayWriter = new CharArrayWriter();
  while (charArrayReader.ready()) {
    charArrayWriter.write(charArrayReader.read()); //将输入流的内容写入输出流
  }
  //将输出流转换为字符数组
  char[] temp_char = charArrayWriter.toCharArray();
}

这个例子的功能也比较简单,主要分为以下几个步骤。

  1. 首先定义一个字符串,用作待处理的数据
  2. 然后实例化输入流实例,将输入读入流中
  3. 紧接着实例化输出流
  4. 然后把输入流中的数据写入输出流中,再将输出流中的内容转换成字符数组

虽然示例中代码没有什么实际意义,但是可以很清晰地解释清楚CharArrayWriter 的使用方法。

总结

这篇文章讲述了CharArrayWriter 的概念及使用方法,CharArrayWriter 也可以算作Writer 的一个常用子类了。主要处理字符相关的数据。其实在我们的开发过程中,对于同一份数据,我们处理的方式有很多中,可以说Java 有很多Api 提供给了我们供我们使用。具体使用哪个,我们不仅要考虑到使用场景,也要考虑使用的方式是否适合业务场景,所以说,不能死板地决定处理字符的数据就只能使用CharArrayWriter,这样不是一个明确的选择。

接下来的文章我们会继续讲Writer 的其他实现类。