无法找到文件的结尾

时间:2012-12-23 18:02:21

标签: java stdin eof

我在尝试从stdin找到文件结尾时遇到问题。 我试图获得所有写入concil的数字,直到达到EOF:

1

2

3

4

EOF

我的代码如下:

public void readInput() {
    Scanner scanner = new java.util.Scanner(new InputStreamReader(System.in)).useDelimiter("n");
    ...
    while (scanner.hasNextLine()) {
    ..
    }    
}

所以问题是它在到达EOF时不会终止。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

System.in阅读时,您可以在Windows上使用CTRL-Z,在* nix平台上使用CTRL-D来发信号通知EOF

除非有特定要求,否则通常也不需要使用分隔符。这可以简化为:

Scanner scanner = new Scanner(System.in);
while (scanner.hasNextLine()) {
   System.out.println(scanner.nextLine());
   ...
}

答案 1 :(得分:0)

如果需要一些分隔符,绝对使用分隔符是一个很好的做法。避免使用CTRL-ZCTRL-D。在这里,我使用EOFEnd Of Fileend-of-file作为分隔符,您可以根据要求修改分隔符。

        Scanner sin = new Scanner(System.in);
        CharSequence end1 = "end-of-file";
        CharSequence end2 = "EOF";
        CharSequence end3 = "End Of File";
        ArrayList<String> Arr = new ArrayList<String>();
        int i =0;

        while(sin.hasNext())
        {
            Arr.add(sin.nextLine());
            if( (Arr.get(i).contains(end1)) == true || (Arr.get(i).contains(end2)) == true || (Arr.get(i).contains(end3) ) == true )
            {
                i++;
                break;
            }
            i++;
        }