gpt4 book ai didi

Java 扫描器 hasNextLine 返回 false

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:43:23 27 4
gpt4 key购买 nike

我有几个文件(实际上它们也是保存在 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 文件的注释部分)。就是下面这个字符。

¸

当我删除这个字符时,我可以正常读取文件。然而,这是 Not Acceptable 。即使其中包含该字符,我该怎么做才能读取文件?

最佳答案

这很可能是字符集问题,因为您运行 Java 代码的平台默认使用不同的字符集; 总是指定解析时要使用的预期/需要的字符集是一个好习惯,对于 Scanner 类,只需调用 constructor作为:

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

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

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

关于Java 扫描器 hasNextLine 返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30564069/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com