Java Reader 类详细介绍以及用法详解

在本教程中,我们通过示例了解 Java Reader 类、它的子类和它的方法。

在本教程中,我们通过示例了解 Java Reader 类、它的子类和它的方法。

java.io 包中的 Reader 类的是一个表示字符输入流抽象超类。

Reader 类是一个抽象类,它定义了字符输入流的操作方法和一些公共的逻辑。它本身不能被实例化,它有很多子类分别实现了处理字符输入流的不同方案。

Reader 的子类

Reader 有很多子类,常用到包括:

Java Reader 的子类是 BufferedReader、InputStreamReader、FileReader 和 StringReader。
Java Reader 类

我们将在后面的教程中了解所有这些子类。

创建 Reader

Reader 是一个抽象类,我们要通过它的子类创建它的实例。如下,我们使用 FileReader 类创建了 Reader 对象实例:

Reader input = new FileReader();

Reader 方法

Reader 类定义了很多需要子类实现的抽象方法。以下是一些常用的方法:

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

示例:使用 FileReader 读取文件

以下实例我们展示如何使用 Reader 的子类 FileReader 来读取文件的内容。

假设我们有一个文件 input.txt 内容如下:

This is a line of text inside the file.

我们使用 FileReader 读取文件内容。

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

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

    char[] array = new char[100];

    try {
      Reader input = new FileReader("input.txt");
      System.out.println("Is there data in the stream?  " + input.ready());

      input.read(array);
      System.out.println("Data in the stream: ");
      System.out.println(array);

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

输出

Is there data in the stream?  true
Data in the stream: This is a line of text inside the file.

在上面的示例中,我们使用 FileReader 类创建了一个 Reader 对象,并与文件 input.txt 关联起来。如下:

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

然后我们使用 read() 方法读取数据,最后使用 close() 方法关闭了对象。

input.read();
input.close();