Java FileReader 类
- FileReader基础:
FileReader
类位于java.io
包中,用于以字符为单位从文件中读取数据,它扩展了InputStreamReader
类。 - 创建FileReader实例:可以通过文件名或文件对象创建
FileReader
实例,自Java 11起还支持指定字符编码类型。 - FileReader方法:
FileReader
提供了读取数据的方法如read()
、getEncoding()
,以及close()
方法用于关闭读取器。其他 方法包括ready()
、mark()
、reset()
,增强了文件读取功能。
java.io
包中的 FileReader
类可用于从文件中读取数据(以字符为单位)。
它扩展了 InputSreamReader
类。
在学习 FileReader
之前,请确保您了解 Java 文件。
创建 FileReader
为了创建文件读取器,我们首先必须导入 java.io.FileReader
包。导入包后,以下是我们如何创建文件读取器的方法。
1. 使用文件的名称
FileReader input = new FileReader(String name);
在这里,我们创建了一个文件读取器,它将链接到由 name
指定的文件。
2. 使用文件对象
FileReader input = new FileReader(File fileObj);
在这里,我们创建了一个文件读取器,它将链接到由文件对象指定的文件。
在上面的示例中,文件中的数据使用了某些默认字符编码。
然而,自从 Java 11 起,我们也可以在文件中指定字符编码的类型(UTF-8 或 UTF-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)
- 从读取器中读取等于length
的字符数量并从start
位置开始存储在指定数组中
例如,假设我们有一个名为 input.txt 的文件,内容如下。
这是文件中的一行文本。
让我们尝试使用 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("文件中的数据: ");
System.out.println(array);
// 关闭读取器
input.close();
}
catch(Exception e) {
e.getStackTrace();
}
}
}
输出
文件中的数据:
这是文件里的一行文本。
在上述示例中,我们创建了一个名为 input
的文件读取器。该文件读取器与文件 input.txt 关联。
FileInputStream input = new FileInputStream("input.txt");
为了从文件中读取数据,我们使用了 read()
方法。
注意:文件 input.txt 应该存在于当前工作目录中。
getEncoding() 方法
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());
// 关闭读取器
input1.close();
input2.close();
}
catch(Exception e) {
e.getStackTrace();
}
}
}
输出
input1 的字符编码: Cp1252
input2 的字符编码: UTF8
在上述示例中,我们创建了两个名为 input1
和 input2
的文件读取器。
input1
没有指定字符编码。因此,getEncoding()
方法返回默认的字符编码。input2
指定了字符编码,UTF8。因此,getEncoding()
方法返回指定的字符编码。
注意:我们使用了 Charset.forName()
方法来指定字符编码的类型。要了解更多,请访问 Java Charset(官方 Java 文档)。
close() 方法
要关闭文件读取器,我们可以使用 close()
方法。一旦调用 close()
方法,我们就不能再使用读取器来读取数据。
FileReader 的其他方法
方法 | 描述 |
---|---|
ready() | 检查文件读取器是否准备好读取 |
mark() | 标记文件读取器中已读取数据的位置 |
reset() | 将控制权返回到读取器中设置标记的点 |
要了解更多,请访问 Java FileReader(官方 Java 文档)。