-3

我正在使用 Scanner + System.in 读取文件。我在 Linux 中的命令如下所示:

cat -A test.txt | java -jar test.jar

我正在阅读如下输入:

Scanner input = new Scanner(System.in);

    while (input.hasNextLine())
    {
        String log_line = input.nextLine();
    }

问题是..到达文件末尾时如何停止阅读?

4

2 回答 2

3

问题是System.in永远不会“结束”,即 EOF 永远不会发送到流中,因此hasNextLine()在最后一行之后阻塞等待更多数据。

解决方案是将文件名传递给您的应用程序,FileInputStream(filePath)然后在 Scanner 构造函数中打开并使用它。

于 2010-11-30T16:06:24.003 回答
2

似乎问题是-A选项,而不是您的 java 代码(它在纯文件上正常工作):

$ echo -e "foo\nbar" | java -jar Test.jar 
foo
bar
$

也许 test.txt 包含一些扫描仪无法处理的不可打印字符......

于 2010-11-30T15:44:25.047 回答