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

What is the difference between Java File+Scanner object for reading files and a FileReader object?

我试图找出 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 对象允许我们使用该字符串中存在的文件 path/filename..

但是这里的 File+Scanner 组合的作用与 FileReader(File file) 或 FileReader(String filename) 对象的作用有什么区别(我不是问不同版本的 FileReader,我明白了重载的想法 methods/constructors)?

这将有助于解释 FileReader 的功能以及它与 Scanner 的不同之处..

提前谢谢大家。

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

简单来说:

Scanner:一个简单的文本扫描器,可以使用正则表达式解析原始类型和字符串。优点是程序员无需担心将输入数据解析和转换为各种原语的编写实现。这样可以加快开发和可靠,因为它被大家使用和测试。

FileReader: 方便class读取字符文件或字符流。 FileReader 提供的功能仅限于从定义的流中读取字符。剩下的工作就交给程序员了。

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