有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JAVAutil。scanner Java scanner 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。(我甚至尝试下一步)

最后,我查看了文件的内容,发现有一个不同的字符(位于java文件的注释部分)。这是下面的角色

¸

当我删除这个字符时,我可以正常读取文件。然而,这是不可接受的。即使有这个字符,我还能做些什么来读取文件呢


共 (1) 个答案

  1. # 1 楼答案

    这很可能是一个字符集问题,因为运行java代码的平台默认使用不同的字符集;指定解析时要使用的预期/所需字符集是始终的一个好做法,使用Scanner类只需将constructor调用为:

    Scanner scanner = new Scanner(file, "UTF-8");
    

    其中第二个参数是字符集文字,甚至是better

    Scanner scanner = new Scanner(file, StandardCharsets.UTF_8);