掌握 Java Reader 类:子类、核心方法与 FileReader 实战示例
Java Reader 类
什么是 Reader 类?
Reader 位于 java.io,是字符输入流的抽象超类。不可直接实例化,其具体子类提供从各种源读取文本数据的功能。
Reader 常见子类
- BufferedReader – 为字符、数组、行读取添加缓冲提高效率
- InputStreamReader – 用指定字符集连接字节流到字符流
- FileReader – 便利类,按默认字符集读文件
- StringReader – 从字符串读取字符作为流
各子类将在专门教程深入讲解。
实例化 Reader
导入 java.io.Reader 和子类,如用 FileReader:
import java.io.Reader;
import java.io.FileReader;
Reader input = new FileReader("input.txt");
Reader 抽象,必须用子类,否则编译错误。
提示: 其他子类实例化方式相同。
Reader 提供的关键方法
boolean ready()– 流准备好可读无阻塞返回trueint read(char[] cbuf)– 读字符到数组,返回读取数int read(char[] cbuf, int off, int len)– 从off读最多len字符到cbufvoid mark(int readAheadLimit)– 标记流当前位置void reset()– 重定位到最后标记位置long skip(long n)– 跳过并丢弃 n 字符
示例:用 FileReader 读取文件
假设 input.txt 内容:
This is a line of text inside the file.
完整生产级示例:读文件并打印内容。
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
public class Main {
public static void main(String[] args) {
char[] buffer = new char[100];
try (Reader reader = new FileReader("input.txt")) {
System.out.println("Is there data in the stream? " + reader.ready());
int charsRead = reader.read(buffer);
System.out.println("Data in the stream:\n" + new String(buffer, 0, charsRead));
} catch (IOException e) {
e.printStackTrace();
}
}
}
输出
Is there data in the stream? true Data in the stream: This is a line of text inside the file.
要点:
- 始终关闭 reader——
try-with-resources自动处理 - 用
ready()验证数据可用再读取 - 处理
IOException覆盖文件未找到或读错误
详细文档见官方 Java Reader Javadoc。
java
- 深入理解 Java final 关键字:变量、方法与类的不可变性
- Java instanceof 运算符完全指南:用法、继承与接口检查
- 精通 Java 继承:核心概念、类型与实战示例
- 深入理解 Java 静态嵌套类:用法、差异与实战示例
- 精通 Java 匿名内部类:定义、语法与实战示例
- Java 单例模式详解:安全实现与使用指南
- 精通 Java 反射:运行时检查类、方法与字段
- 精通 Java ArrayList:操作、方法与最佳实践
- Java Stack 类全面指南:用法、核心方法与实战示例
- 掌握 Java ObjectOutputStream:序列化、核心方法与实战示例
- 掌握 Java 泛型:构建可复用、类型安全的代码
- 掌握 Java 文件操作:java.io 包下的创建、读取、写入与删除