在本教程中,我们将借助示例学习Java FileReader及其方法。
java.io包的FileReader类可用于从文件中读取数据(以字符为单位)。
它继承了InputSreamReader类。

在学习之前FileReader,请确保您了解Java文件。
为了创建一个文件阅读器,我们必须首先导入java.io.FileReader包。导入程序包后,这里是创建文件阅读器的方法。
1.使用文件名
FileReader input = new FileReader(String name);
在这里,我们创建了一个文件阅读器,该文件阅读器将链接到所指定的文件名。
2.使用文件的对象
FileReader input = new FileReader(File fileObj);
在这里,我们创建了一个文件读取器,该文件读取器将链接到文件对象所指定的文件。
在上面的示例中,文件中的数据使用某些默认字符编码存储。
但是,由于Java 11,我们也可以在文件中指定字符编码的类型(UTF-8或UTF-16)。
FileReader input = new FileReader(String file, Charset cs);
在这里,我们使用Charset类来指定文件阅读器的字符编码。
FileReader类提供Reader类中存在的不同方法的实现。
read() - 从阅读器读取单个字符
read(char[] array) - 从阅读器读取字符并将其存储在指定的数组中
read(char[] array, int start, int length) - 从读取器读取等于length的字符数,并从位置start开始存储在指定的数组中
例如,假设我们有一个名为input.txt的文件,其中包含以下内容。
This is a line of text inside the file.
让我们尝试使用读取文件FileReader。
import java.io.FileReader;
class Main {
  public static void main(String[] args) {
    //创建一个字符数组
    char[] array = new char[100];
    try {
      //使用FileReader创建阅读器
      FileReader input = new FileReader("input.txt");
      //读取字符
      input.read(array);
      System.out.println("Data in the file: ");
      System.out.println(array);
      // 关闭 reader
      input.close();
    }
    catch(Exception e) {
      e.getStackTrace();
    }
  }
}输出结果
Data in the file: This is a line of text inside the file.
在上面的示例中,我们创建了一个名为input的文件阅读器。文件阅读器与文件input.txt链接。
FileInputStream input = new FileInputStream("input.txt");为了从文件中读取数据,我们使用了read()方法。
getEncoding()方法可用于获取用于在文件中存储数据的编码类型。例如,
import java.io.FileReader;
import java.nio.charset.Charset;
class Main {
  public static void main(String[] args) {
    try {
      //使用默认编码创建一个FileReader
      FileReader input1 = new FileReader("input.txt");
      //创建一个FileReader指定编码
      FileReader input2 = new FileReader("input.txt", Charset.forName("UTF8"));
      //返回文件阅读器的字符编码
      System.out.println("input1的字符编码: " + input1.getEncoding());
      System.out.println("input2的字符编码: " + input2.getEncoding());
      //关闭 reader
      input1.close();
      input2.close();
    }
    catch(Exception e) {
      e.getStackTrace();
    }
  }
}输出结果
input1的字符编码: Cp1252 input2的字符编码: UTF8
在上面的示例中,我们创建了2个文件阅读器,分别名为input1和input2。
input1没有指定字符编码。因此,getEncoding()方法返回默认字符编码。
input2指定字符编码UTF8。因此,getEncoding()方法返回指定的字符编码。
注意:我们已经使用该Charset.forName()方法指定字符编码的类型。
要关闭文件阅读器,我们可以使用close()方法。调用close()方法后,我们将无法使用读取器读取数据。
| 方法 | 描述 | 
|---|---|
| ready() | 检查文件阅读器是否准备好阅读 | 
| mark() | 标记文件读取器中已读取数据的位置 | 
| reset() | 重置阅读器,返回到阅读器中设置标记的位置 |