如何使用 java 程序 < "filename" 到达输入文件?

How to reach the input file using java program < "filename"?

我正在做一项作业,我应该在其中处理一个文件。测试人员使用命令参数

"java puzzle < sample_input_1.txt"

到 运行 文件和我的程序。我的程序是 "puzzle",文件是 "sample_input_1.txt"。

我搜索了一下,但不太确定如何从此文件中检索数据。我习惯于将文件路径作为 main 的参数,我使用扫描仪来读取它。

编程和检索数据时如何访问该文件?我想做一些像扫描仪一样的事情来阅读它。

谢谢大家!

它在标准输入流 (System.in) 中出现。命令末尾的 < sample_input_1.txt 将标准输入流重定向到给定文件。它几乎存在于每个终端程序中。可以找到更多信息 here.

它在您的标准输入流中。澄清一下,如果您习惯于使用接受 File 的 Scanner 构造函数(像这样):

Scanner scanner = new Scanner(new File(args[0]));

然后使用接受 InputStream 的 Scanner 的构造函数,并传递 System.in:

Scanner scanner = new Scanner(System.in);

之后您应该能够按照您习惯的方式使用扫描仪。

在我看来,最简单的方法是使用 InputStream:

try {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

    String word;
    do {
    word = br.readLine();
    if (word != null) {
        list.add(word); //if you want add the file content to an ArrayList
    } else {
        return; //case file is empty, program is finished
    }
    } while (word != null);

} catch (Exception e) {
    System.err.println("Error:" + e.getMessage());
}