扫描仪使用循环从命令行读取文本文件,但循环不会中断

Scanner reading a text file from command line using a loop, but the loop will not break

所以我想使用

从命令行读取 java 中的 .text 或 .data 文件
java name < filename.data

代码如下:

        ArrayList<String> input = new ArrayList<>();
        Scanner scanner = new Scanner(System.in);

        while (scanner.hasNextLine()) {
             System.out.println("Reading line");
             String line = scanner.nextLine().trim();
             System.out.println("The line is: " + line);
             if (line.equals("") || line.isEmpty()) {
                 System.out.println("Found blank area");
                  break;
              }  
             System.out.println("Adding to arrayList");
             input.add(line);

        }
        System.out.println("Read in was successful");

行 "system.out.println("Read in was successful"); 从未达到。似乎也从未达到用于在读取后中断循环的 'if' 语句。它甚至似乎都没有循环 returns 到顶部。这是我的输出(该方法成功读取了我所有的文本文件)

Reading line
The line is: car
Adding to arrayList
Reading line
The line is: mega
Adding to arrayList
Reading line
The line is: bed
Adding to arrayList
Reading line
The line is: stop
Adding to arrayList
Reading line
The line is: game
Adding to arrayList
Reading line
The line is: pots
Adding to arrayList
Reading line
The line is: arc
Adding to arrayList

我希望再有一个 运行,它表明程序已通过打印输出 "Found blank area" 到达文件末尾。

所以它似乎成功地读取了行,但似乎无法中断。我的程序没有崩溃,如果有任何意义的话,它只是 "hangs" 在那里。

它没有到达 if (line.equals("") || line.isEmpty()) 代码,因为我认为空文件中没有空行,我尝试 运行 代码并获得了所需的输出,输入文件内容为

输出

Reading line
The line is: car
Adding to arrayList
Reading line
The line is: mega
Adding to arrayList
Reading line
The line is: bed
Adding to arrayList
Reading line
The line is: stop
Adding to arrayList
Reading line
The line is: game
Adding to arrayList
Reading line
The line is: pots
Adding to arrayList
Reading line
The line is:
Found blank area
Read in was successful

输入文件

car
mega
bed
stop
game
pots

arc