chararrayreader 是 java 中用于内存中读取字符数组的类,属于 java.io 包,支持逐字符/批量读、跳过、标记/重置等操作,构造时可指定整个数组或起始位置与长度,线程不安全且需手动管理资源,jdk 11+ 更推荐使用 stringreader。

CharArrayReader 是 Java 中一个用于在内存中读取字符数组的类,属于 java.io 包,它把字符数组(char[])当作输入源,提供类似流的读取接口,适合临时解析、测试或避免频繁创建字符串对象的场景。
基本用法:创建并读取字符数组
只需传入一个 char[],就能构造出 CharArrayReader 实例。它支持逐字符读、批量读、跳过、标记/重置等操作:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 构造时可指定整个数组,也可指定起始位置和长度(类似
String的子串逻辑) -
read()返回下一个字符(int 类型,-1 表示结束) -
read(char[] cbuf, int off, int len)批量读入目标数组的指定区间 -
skip(long n)跳过指定数量字符 - 支持
mark()和reset()(需提前调用markSupported()确认)
简单示例:从 char 数组读取内容
以下代码演示如何用 CharArrayReader 读取并打印字符:
char[] data = {'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd'};
try (CharArrayReader reader = new CharArrayReader(data)) {
int ch;
while ((ch = reader.read()) != -1) {
System.out.print((char) ch);
}
}
// 输出:Hello World
带偏移和长度的构造方式
如果只想读数组的一部分,可以使用三参数构造方法:
char[] buf = "Java IO is handy".toCharArray();
// 从索引 5 开始,读取 7 个字符 → "IO is h"
try (CharArrayReader reader = new CharArrayReader(buf, 5, 7)) {
reader.read(new char[7]); // 可配合 char[] 批量读
}
注意点与替代建议
-
CharArrayReader是线程不安全的,多线程共享时需同步 - 它不自动关闭资源,但实现
AutoCloseable,推荐用 try-with-resources - 若只是想把字符数组转为字符串再处理,直接用
new String(charArr)更简洁 - JDK 11+ 推荐优先考虑
StringReader(传入String),语义更清晰且底层优化更好
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










