📜  Java FileReader类

📅  最后修改于: 2020-09-26 14:38:27             🧑  作者: Mango

在本教程中,我们将借助示例学习Java FileReader及其方法。

java.io包的FileReader类可用于从文件中读取数据(以字符)。

它扩展了InputSreamReader类。

The FileReader is a subclass of InputStreamReader and the InputStreamReader is subclass of Java Reader.

在学习FileReader之前,请确保您了解Java File。


创建一个FileReader

为了创建文件阅读器,我们必须首先导入java.io.FileReader包。导入程序包后,这就是创建文件阅读器的方法。

1.使用文件名

FileReader input = new FileReader(String name);

在这里,我们创建了一个文件阅读器,该文件阅读器将链接到name指定的文件。

2.使用文件的对象

FileReader input = new FileReader(File fileObj);

在这里,我们创建了一个文件读取器,该文件读取器将链接到文件对象所指定的文件。

在上面的示例中,文件中的数据使用某种默认字符编码存储。

但是,由于Java 11,我们也可以在文件中指定字符编码的类型( UTF-8UTF-16 )。

FileReader input = new FileReader(String file, Charset cs);

在这里,我们使用了Charset类来指定文件阅读器的字符编码。


FileReader的方法

FileReader类提供Reader类中存在的不同方法的实现。

read()方法

  • read() -从阅读器读取单个字符
  • read(char[] array) -从阅读器读取字符并将其存储在指定的数组中
  • read(char[] array, int start, int 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) {

    // Creates an array of character
    char[] array = new char[100];

    try {
      // Creates a reader using the FileReader
      FileReader input = new FileReader("input.txt");

      // Reads characters
      input.read(array);
      System.out.println("Data in the file: ");
      System.out.println(array);

      // Closes the 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()方法

getEncoding()方法可用于获取用于在文件中存储数据的编码类型。例如,

import java.io.FileReader;
import java.nio.charset.Charset;

class Main {
  public static void main(String[] args) {

    try {
      // Creates a FileReader with default encoding
      FileReader input1 = new FileReader("input.txt");

      // Creates a FileReader specifying the encoding
      FileReader input2 = new FileReader("input.txt", Charset.forName("UTF8"));

      // Returns the character encoding of the file reader
      System.out.println("Character encoding of input1: " + input1.getEncoding());
      System.out.println("Character encoding of input2: " + input2.getEncoding());

      // Closes the reader
      input1.close();
      input2.close();
    }

    catch(Exception e) {
      e.getStackTrace();
    }
  }
}

输出

The character encoding of input1: Cp1252
The character encoding of input2: UTF8

在上面的示例中,我们创建了2个文件读取器,分别名为input1input2

  • input1未指定字符编码。因此, getEncoding()方法返回默认字符编码。
  • input2指定字符编码UTF8 。因此, getEncoding()方法返回指定的字符编码。

注意 :我们已经使用Charset.forName()方法来指定字符编码的类型。要了解更多信息,请访问Java Charset(Java官方文档)。


close()方法

要关闭文件阅读器,我们可以使用close()方法。一旦调用close()方法,我们将无法使用读取器读取数据。


FileReader的其他方法
Method Description
ready() checks if the file reader is ready to be read
mark() mark the position in file reader up to which data has been read
reset() returns the control to the point in the reader where the mark was set

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