繁体   English   中英

为什么我的 java.util.Scanner 不读取我的文件?

[英]Why does my java.util.Scanner not read my File?

我的扫描仪不读取由 BufferedReader 读取的现有文件,但 BufferedReaders 不支持我的文件需要的 UTF-8 编码。

我已经使用了 BufferedReader(即使使用 UTF-8,它没有给我像“ä”(德语字母)这样的字母,而是给了我尴尬的问号符号)。 我当然已经使用过扫描仪。

public ArrayList<String> getThemefile2() {
    Scanner s;
    try {
        s = new Scanner(themefile);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
        return new ArrayList<>();
    }
    ArrayList<String> list = new ArrayList<>();
    while (s.hasNextLine()) {
        list.add(s.nextLine());
    }
    s.close();
    return list;
}

它只返回一个空的 ArrayList,但不会触发 FileNotFoundException。 主题文件是一个现有的文件。

您需要为文件指定编码,如果它不是您的系统默认值。 在您的情况下,这将是您创建Scanner

s = new Scanner(themefile, "UTF-8");

没有要查看的文件,我们都只是在猜测问题所在。

这是一个猜测:没有下一行,因此 while 循环立即中断,您得到一个空的数组列表。 如果文本文件中根本没有换行符,就会出现这种情况。

如果您使用的是 Java 8+,我建议您使用Files#lines方法:

try (Stream<String> stream = Files.lines(themeFile.toPath())) {
    stream.collect(Collectors.toList()); //need to be stored in a variable.
} catch (IOException e) {
    e.printStackTrace();
}

文件:

我在 api 28 级别上遇到了同样的问题。 这对我有用:

s = new Scanner(new FileReader(themefile));

并且必须导入:

import java.io.FileReader;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM