我有几个文件(实际上它们也是在Ubuntu上保存在Eclipse中的java源文件),我需要逐行阅读和处理。我注意到我无法读取其中一个文件。我使用的代码如下
try (Scanner scanner = new Scanner(file)) {
while (scanner.hasNextLine() ) {
builder.append(scanner.nextLine()).append("\n");
}
} catch (FileNotFoundException ex) {
System.out.println("Error");
}
我正在检查文件是否存在。确实如此。我甚至可以重命名它。但我不能读一行。 hasNextLine只返回false。 (我甚至尝试hasNext)。
最后,我看一下文件的内容,发现有一个不同的外观字符(在java文件的评论部分)。它是以下字符。
¸
当我删除这个字符时,我可以正常读取该文件。但这是不可接受的。如果文件中包含该字符,我该怎么做?
答案 0 :(得分:3)
这很可能是一个字符集问题,因为您运行Java代码的平台默认使用不同的集合; 总是是一种很好的做法,可以指定解析时要使用的预期/需要的字符集,而使用Scanner类只需将constructor称为:
Scanner scanner = new Scanner(file, "UTF-8");
其中第二个参数是字符集文字,甚至是better:
Scanner scanner = new Scanner(file, StandardCharsets.UTF_8);