跳到主要内容

Java Reader 类

提示
  1. Reader 类概述Readerjava.io 包中的一个抽象类,专用于字符流读取。
  2. Reader 的子类:主要子类包括 BufferedReaderInputStreamReaderFileReaderStringReader
  3. 常用方法:提供如 ready()read(char[] array)mark()reset()skip() 等用于读取和操作字符流的方法。

java.io 包中的 Reader 类是一个抽象的超类,代表字符流。

由于 Reader 是一个抽象类,它本身并不具有实用性。然而,其子类可以用来读取数据。

Reader 的子类

为了使用 Reader 的功能,我们可以使用它的子类。其中一些包括:

BufferedReader、InputStreamReader 和 StringReader 是 Reader 的子类

我们将在下一个教程中学习所有这些子类。

创建 Reader

为了创建一个 Reader,我们首先必须导入 java.io.Reader 包。一旦我们导入了包,下面是我们如何创建 reader 的方式。

// 创建一个 Reader
Reader input = new FileReader();

这里,我们使用 FileReader 类创建了一个 reader。这是因为 Reader 是一个抽象类。因此我们不能创建 Reader 的对象。

注意:我们也可以从 Reader 的其他子类创建 reader。

Reader 的方法

Reader 类提供了不同的方法,这些方法由其子类实现。这里是一些常用的方法:

  • ready() - 检查 reader 是否准备好被读取
  • read(char[] array) - 从流中读取字符并存储在指定数组中
  • read(char[] array, int start, int length) - 从流中读取等于 length 的字符数并从 start 开始存储在指定数组中
  • mark() - 标记流中已读取数据的位置
  • reset() - 将控制返回到流中标记设置的点
  • skip() - 从流中丢弃指定数量的字符

示例:使用 FileReader 的 Reader

这里是我们如何使用 FileReader 类实现 Reader

假设我们有一个名为 input.txt 的文件,内容如下。

这是文件中的一行文本。

让我们尝试使用 FileReaderReader 的一个子类)读取这个文件。

import java.io.Reader;
import java.io.FileReader;

class Main {
public static void main(String[] args) {

// 创建一个字符数组
char[] array = new char[100];

try {
// 使用 FileReader 创建一个 reader
Reader input = new FileReader("input.txt");

// 检查 reader 是否准备好
System.out.println("流中是否有数据? " + input.ready());

// 读取字符
input.read(array);
System.out.println("流中的数据:");
System.out.println(array);

// 关闭 reader
input.close();
}

catch(Exception e) {
e.getStackTrace();
}
}
}

输出

流中是否有数据?  true
流中的数据:
这是文件中的一行文本。

在上面的示例中,我们使用 FileReader 类创建了一个 reader。这个 reader 与文件 input.txt 链接。

Reader input = new FileReader("input.txt");

为了从 input.txt 文件中读取数据,我们实现了这些方法。

input.read();       // 从 reader 中读取数据
input.close(); // 关闭 reader

要了解更多,请访问 Java Reader(官方 Java 文档)