一起养成写作习惯!这是我参与「掘金日新计划 · 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();
}
这个例子的功能也比较简单,主要分为以下几个步骤。
- 首先定义一个字符串,用作待处理的数据
- 然后实例化输入流实例,将输入读入流中
- 紧接着实例化输出流
- 然后把输入流中的数据写入输出流中,再将输出流中的内容转换成字符数组
虽然示例中代码没有什么实际意义,但是可以很清晰地解释清楚CharArrayWriter 的使用方法。
总结
这篇文章讲述了CharArrayWriter 的概念及使用方法,CharArrayWriter 也可以算作Writer 的一个常用子类了。主要处理字符相关的数据。其实在我们的开发过程中,对于同一份数据,我们处理的方式有很多中,可以说Java 有很多Api 提供给了我们供我们使用。具体使用哪个,我们不仅要考虑到使用场景,也要考虑使用的方式是否适合业务场景,所以说,不能死板地决定处理字符的数据就只能使用CharArrayWriter,这样不是一个明确的选择。
接下来的文章我们会继续讲Writer 的其他实现类。