Java 中,CharArrayReader 类(java.io.CharArrayReader)能让你以字符流的方式读取字符数组里的内容。
如果你的数据存储在字符数组中,而接收数据的组件只能从 Reader(或 Reader 的子类)获取数据,那么 CharArrayReader 就会成为一个极为便利的工具。你只需把字符数组封装进 CharArrayReader,再将其传递给相应组件就可以了。
以下是一个简单的 CharArrayReader 示例:
package com.hxstrive.java_io;
import java.io.CharArrayReader;
public class CharArrayReaderExample {
public static void main(String[] args) throws Exception {
// 定义一个字符数组
char[] chars = {'A', 'B', 'C', 'D', 'E', 'F'};
// 创建 CharArrayReader 实例
try(CharArrayReader charArrayReader = new CharArrayReader(chars)) {
int data = charArrayReader.read();
while(data != -1) {
System.out.print((char)data);
data = charArrayReader.read();
}
System.out.println();
}
}
}上述示例,创建了一个 CharArrayReader 实例,将字符数组作为参数传递给 CharArrayReader 构造函数。然后,从 CharArrayReader 逐个读取字符并打印到控制台。
除了使用完整的字符数组来创建 CharArrayReader,你还可以基于字符数组的部分内容来创建 CharArrayReader 实例。例如:
package com.hxstrive.java_io;
import java.io.CharArrayReader;
public class CharArrayReaderExample2 {
public static void main(String[] args) throws Exception {
// 字符数组
char[] chars = "0123456789".toCharArray();
int offset = 2; // 偏移量
int length = 6; // 长度
try(CharArrayReader charArrayReader = new CharArrayReader(chars, offset, length)) {
int data = charArrayReader.read();
while(data != -1) {
System.out.print((char)data);
data = charArrayReader.read();
}
System.out.println(); // 输出:234567
}
}
}此示例创建了一个 CharArrayReader,它只读取字符数组中,索引从 2 开始的 6 个字符元素。
当使用完 CharArrayReader 后,可以使用 close() 方法关闭 CharArrayReader,如下所示:
charArrayReader.close();
或者,您也可以使用 Java7 的 try-with-resources 结构自动关闭 CharArrayReader。如下所示:
try(CharArrayReader charArrayReader = new CharArrayReader(chars, offset, length)){
int data = charArrayReader.read();
while(data != -1) {
data = charArrayReader.read();
}
}注意,在上述示例中并没有显式调用 close() 方法,因为 try-with-resources 会自动帮我们调用 close() 方法,即使代码出现错误。不过,由于 CharArrayReader 没有使用任何底层系统资源(如文件或网络套接字),因此关闭 CharArrayReader 并不重要,但是养成关闭资源的习惯很重要。