所以,当我使用Scanner类读取文件内容时,遇到了一个有趣的问题。基本上,我正在尝试从目录中读取由解析应用程序生成的几个输出文件,以计算一些准确性指标。
基本上,我的代码只是遍历目录中的每个文件,并使用扫描仪打开它们以处理内容。由于某种原因,一些文件(均为UTF-8编码)无法被Scanner读取。即使这些文件不为空,scanner.hasNextLine()在第一次调用时也会返回false(我打开了调试器并观察了这一点)。我每次都直接使用File对象初始化扫描仪(文件对象已成功创建)。例如:
基本上,我的代码只是遍历目录中的每个文件,并使用扫描仪打开它们以处理内容。由于某种原因,一些文件(均为UTF-8编码)无法被Scanner读取。即使这些文件不为空,scanner.hasNextLine()在第一次调用时也会返回false(我打开了调试器并观察了这一点)。我每次都直接使用File对象初始化扫描仪(文件对象已成功创建)。例如:
File file = new File(pathName);
...
Scanner scanner = new Scanner(file);
我尝试了几件事情,最终通过以下方式初始化扫描器来解决这个问题:
Scanner scanner = new Scanner(new FileInputStream(file));
虽然我很高兴解决了问题,但我仍然好奇在此之前可能会发生什么导致问题。 有任何想法吗?非常感谢!