Java中的FileReader和BufferedReader函数:如何使用它们从文件中读取数据?
在Java中,要从文件中读取数据,可以使用FileReader和BufferedReader类及其相应的方法来实现。FileReader和BufferedReader为读取文本文件提供了便捷的方法。在此篇文章中,我们将讨论如何使用这两种类从文件中读取数据。
FileReader类
FileReader类是一个用于读取字符的输入流。它使用指定的文件名构造一个文件读取器,并支持从文件中读取字符数据。下面是一些使用FileReader读取文本文件的基本示例:
FileReader fr = new FileReader("文件路径"); // 创建FileReader对象,指定要读取的文件名
int data = fr.read(); // 使用read()方法读取一个字符
while (data != -1) { // 当文件结束时,read()方法会返回-1
System.out.print((char)data); // 将字符输出到控制台
data = fr.read(); // 继续读取下一个字符
}
fr.close(); // 关闭文件读取器
在这个简单的例子中,我们创建了一个FileReader对象,然后依次读取文本文件中的每个字符,并将它们输出到控制台中。这种方法是基于Java字节流读取方式,所以每次只能读取一个字符,这样会使得在读取大文件时非常耗时。
BufferedReader类
为了避免上述问题,在Java中可以使用BufferedReader类,它提供了更高效的方式来读取文本文件和从数据流中读取数据。BufferedReader类实现的是字符输入流的具体子类,它提供了读取文本的方法。
BufferedReader类可以使用FileReader和InputStreamReader对象来初始化,根据另一个输入流对象推出流,所以推荐用BufferedReader类来读取文本比较好。
下面是一个使用BufferedReader读取文本文件的示例。代码如下:
File file = new File("文件路径"); //创建文件对象
FileReader fr = new FileReader(file); //在文件对象上创建FileReader对象
BufferedReader br = new BufferedReader(fr); //创建BufferedReader对象
String line = null;
while ((line = br.readLine()) != null) { //循环遍历文件中的每一行
System.out.println(line); //输出每一行数据
}
fr.close(); //关闭资源
br.close(); //关闭缓存流
在这个例子中,我们使用FileReader把文件内容装换成字符流,然后和BufferedReader一起使用。BufferedReader提供了一个readLine()方法,它将返回文件中的一行数据。我们可以循环遍历文件中的每一行,并将它们输出到控制台上。
注意,使用BufferedReader类时,我们需要将字符数据存储在一个字符串变量中,并使用while循环来遍历每一行的数据。这是因为BufferedReader的readLine()方法一次只能读取一行数据,并在读取到文件结尾时返回null。
结论:
Java中,使用FileReader和BufferedReader类来读取数据文件是非常简单的。使用FileReader类来读取数据时,使用read()方法逐个字符读取数据,而使用BufferedReader类时,利用readLine()方法逐行读取文件数据。在阅读文本文件时,使用BufferedReader类是 的选择,因为它能更快地读取大型文本文件。
