Java Reader 类

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

由于Reader是一个抽象类,它本身没有多大用处。但是,它的子类可用于读取数据。


Reader的子类

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

BufferedReader, InputStreamReader, and StringReader are subclasses of Reader
Reader的子类

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


创建Reader

为了创建Reader,我们必须首先导入java.io.Reader包。导入包后,我们可以这样创建Reader。

// Creates a 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 的文件,其内容如下。

This is a line of text inside the file.

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

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

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

        // Creates an array of character
        char[] array = new char[100];

        try {
            // Creates a reader using the FileReader
            Reader input = new FileReader("input.txt");

            // Checks if reader is ready 
            System.out.println("Is there data in the stream?  " + input.ready());

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

            // Closes the reader
            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。该reader与input.txt文件关联。

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

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

input.read();       // to read data from the reader
input.close();      // to close the reader

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

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战