Java 菜鸟教程

Java 流程控制

Java 数组

Java 面向对象(I)

Java 面向对象(II)

Java 面向对象(III)

Java 异常处理

Java 列表(List)

Java Queue(队列)

Java Map集合

Java Set集合

Java 输入输出(I/O)

Java Reader/Writer

Java 其他主题

Java Reader 类

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

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

由于Reader是抽象类,因此它本身不起作用。但是,其子类可用于读取数据。

Reader子类

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

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

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

创建Reader

为了创建一个Reader,我们必须首先导入java.io.Reader包。导入软件包后,就可以创建Reader。

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

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

注意:我们还可以从的其他子类创建ReaderReader。

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.

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

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
流中的数据:
This is a line of text inside the file.

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

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

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

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