在本教程中,我们将通过一个示例了解Java Reader、它的子类和它的方法。
java.io包的Reader类是一个抽象超类,它代表字符流。
由于Reader是抽象类,因此它本身不起作用。但是,其子类可用于读取数据。
为了使用的功能Reader,我们可以使用其子类。他们之中有一些是:
在下一个教程中,我们将学习所有这些子类。
为了创建一个Reader,我们必须首先导入java.io.Reader包。导入软件包后,就可以创建Reader。
// 创建 Reader Reader input = new FileReader();
在这里,我们使用FileReader类创建了一个Reader。这是因为Reader是一个抽象类。因此,我们无法创建Reader的对象。
注意:我们还可以从的其他子类创建ReaderReader。
本Reader类提供由它的子类实现的方法不同。以下是一些常用方法:
ready() - 检查Reader是否准备好读取
read(char[] array) - 从流中读取字符并存储在指定的数组中
read(char[] array, int start, int length)- 从流中读取length相等的字符数,并从start开始存储在指定的数组中
mark() - 标记流中已读取数据的位置
reset() - 重置流。如果流已被标记,然后尝试进行标记,以重新定位。如果该流未被标注,然后尝试将其复位在适当的特定流的一些方法,例如通过将其重新定位到其起始点。
skip() -从流中丢弃指定数量的字符
这是我们如何使用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