编程语言
首页 > 编程语言> > Java扫描器hasNextLine返回false

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