Scanner.hasNext()返回false

Dan*_*sek 4 java file java.util.scanner

我有一个包含许多文件的目录 - 每个文件都有超过800行.Hovewer,当我尝试使用Scanner阅读它时,它似乎是空的.

File f1 = new File("data/cityDistances/a.txt"),
     f2 = new File("data/cityDistances/b.txt");
System.out.println(f1.exists() && f2.exists()); //return true
System.out.println(f1.getTotalSpace() > 0 && f2.getTotalSpace() > 0); //return true
Scanner in = new Scanner(f1);
System.out.println(in.hasNext()); // return false;
System.out.println(in.hasNextLine()); //return false;
Run Code Online (Sandbox Code Playgroud)

为什么它会像那样?


我已成功使用它BufferedReader.尽管如此,它似乎更奇怪的是BufferedReader工作和Scanner没有.

Jam*_*ett 7

由于Scanner的默认分隔符是空格,这意味着您a.txt只包含空格 - 它是否有800行空格?;)

你试过以下吗?

new Scanner(new BufferedReader(new FileReader("a.txt")));
Run Code Online (Sandbox Code Playgroud)


Hug*_*ues 7

今天我在使用Scanner阅读文件时遇到了类似的问题.我指定了文件的编码类型,它解决了问题.

scan = new Scanner(selectedFile,"ISO-8859-1");
Run Code Online (Sandbox Code Playgroud)