Java扫描器hasNextLine返回false
作者:互联网
我有几个文件(实际上它们也是保存在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文件的注释部分).它是以下字符.
¸
删除此字符后,我可以正常读取文件.但是,这是不可接受的.即使有字符,我该怎么做才能读取文件?
解决方法:
这很可能是字符集问题,是由于您正在运行Java代码的平台默认使用其他字符集而引起的;指定解析时要使用的期望/需要的字符集始终是一个好习惯,对于Scanner类,只需将constructor调用为:
Scanner scanner = new Scanner(file, "UTF-8");
其中第二个参数是字符集文字,甚至是better:
Scanner scanner = new Scanner(file, StandardCharsets.UTF_8);
标签:java-util-scanner,java 来源: https://codeday.me/bug/20191120/2042368.html