java.io
包的Reader
类是一个抽象超类,它代表字符流。
由于Reader
是抽象类,因此它本身没有用。但是,其子类可用于读取数据。
读者的子类
为了使用Reader
的功能,我们可以使用其子类。他们之中有一些是:
- 缓冲读取器
- InputStreamReader
- 文件阅读器
- 字符串阅读器
在下一个教程中,我们将学习所有这些子类。
创建读者
为了创建Reader
,我们必须首先导入java.io.Reader
包。导入包后,就可以创建阅读器。
// Creates a Reader
Reader input = new FileReader();
在这里,我们使用FileReader
类创建了一个阅读器。这是因为Reader
是一个抽象类。因此,我们无法创建Reader
的对象。
注意 :我们还可以从Reader
其他子类创建读者。
读者方法
Reader
类提供了由其子类实现的不同方法。以下是一些常用方法:
-
ready()
-检查阅读器是否准备好阅读 -
read(char[] array)
-从流中读取字符并将其存储在指定的数组中 -
read(char[] array, int start, int length)
-从流中读取等于长度的字符数,并从头开始存储在指定的数组中 -
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) {
// 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
类创建了一个阅读器。阅读器与文件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官方文档)。