stringreader 是 java 中将字符串直接作为字符输入流的类,实现 reader 接口,支持 mark/reset、多种读取方式及 try-with-resources 关闭,null 输入抛 nullpointerexception。

StringReader 是 Java IO 中用于将字符串直接作为字符输入流使用的类,它实现了 Reader 接口,无需借助文件或网络资源,适合在内存中读取字符串内容。
创建 StringReader 实例
只需传入一个非 null 的字符串即可构造:
- 使用
new StringReader("hello world")直接包装字符串 - 若字符串为 null,会抛出
NullPointerException - 底层将字符串转为内部字符数组,支持标记(mark)、重置(reset)等操作
常用读取方式
和普通 Reader 一样,可通过多种方式读取:
Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。
- 调用
read()逐个读取字符(返回 int,-1 表示结束) - 使用
read(char[] cbuf)批量读入字符数组 - 配合
BufferedReader提升效率,例如:new BufferedReader(new StringReader(str))
支持标记与重置
StringReader 默认支持 mark/reset,但需注意:
- 调用
mark(10)表示最多可回退 10 个字符(实际限制是整个字符串长度) - 后续调用
reset()可回到上次 mark 的位置 - 若未 mark 就调用 reset,会抛出
IOException
使用后是否需要关闭?
虽然 StringReader 没有底层资源需要释放,但按惯例仍建议:
- 在 try-with-resources 中使用(它实现了
AutoCloseable) - 关闭操作本身无实际影响,但保持代码风格统一、避免误用其他 Reader 时遗漏
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










