用于读取文件的Java File + Scanner对象和FileReader对象有什么区别?

时间:2015-12-13 05:07:13

标签: java file filereader

我试图找到FileReader和我习惯的方法之间的区别。我看到一个类似的问题,但没有真正回答我的问题,那是here。所以这里: 我习惯的方法是这样的:

import java.io.File;
import java.util.Scanner;
...
public static ArrayList<String> read_file(String filename)
{
    File temp = new File(filename);
    Scanner input_file;
    ArrayList<String> result = new ArrayList<String>();
    try
    {
        input_file = new Scanner(temp);
    }
    catch (Exception e)
    {
        System.out.printf("Error: failed to open file %s\n", filename);
    return result;
    }

    while (input_file.hasNextLine)
    {
        String line = input_file.nextLine;
        result.add(line);
    }

    input_file.close();
    return result;

...

我知道File对象允许我们使用该String路径/文件名中存在的文件。

但是File + Scanner组合在这里做什么和FileReader(文件文件)或FileReader(String filename)对象之间的区别是什么(我不是在询问FileReader的不同版本,我明白了重载方法/构造函数)?

这将有助于解释FileReader的作用以及它的使用方式与扫描程序的不同之处。

提前谢谢你们。

2 个答案:

答案 0 :(得分:0)

扫描仪和FileReader的API基本不同。这意味着您可以使用不同的方法来读取文件,具体取决于您使用的文件。扫描程序会尝试对您的文件进行标记,而阅读器则可让您访问更细粒度的详细信息。扫描程序也不是特定于文件的。它可以从许多不同的输入源读取,如命令行。虽然FileReader特定于读取文件。

答案 1 :(得分:0)

简单来说:

Scanner:一个简单的文本扫描程序,可以使用正则表达式解析基本类型和字符串。优点是程序员不必担心解析和将输入数据转换为各种基元的编写实现。这样可以保证开发的可靠性,因为它被大家使用并经过测试。

FileReader:用于读取字符文件或字符流的便捷类。 FileReader提供的功能仅限于从定义的流中读取字符。其余的工作必须由程序员完成。

结论Scanner为读取和解析流(文件)提供了可靠且易于使用的实现,节省了大量开发时间。