原文: https://www.programiz.com/java-programming/reader

在本教程中,我们将通过一个示例来学习 Java Reader,其子类及其方法。

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

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


Reader的子类

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

Java `Reader`类 - 图1

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


创建Reader

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

  1. // Creates a Reader
  2. Reader input = new FileReader();

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

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


Reader方法

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

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

示例:使用FileReaderReader

这是我们可以使用FileReader类实现Reader的方法。

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

  1. This is a line of text inside the file.

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

  1. import java.io.Reader;
  2. import java.io.FileReader;
  3. class Main {
  4. public static void main(String[] args) {
  5. // Creates an array of character
  6. char[] array = new char[100];
  7. try {
  8. // Creates a reader using the FileReader
  9. Reader input = new FileReader("input.txt");
  10. // Checks if reader is ready
  11. System.out.println("Is there data in the stream? " + input.ready());
  12. // Reads characters
  13. input.read(array);
  14. System.out.println("Data in the stream:");
  15. System.out.println(array);
  16. // Closes the reader
  17. input.close();
  18. }
  19. catch(Exception e) {
  20. e.getStackTrace();
  21. }
  22. }
  23. }

输出

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

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

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

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

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

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