Java IO无法读取文本文件

时间:2015-02-20 21:31:25

标签: java file-io java.util.scanner

当我尝试阅读thesaurus.txt时,它将其读作“ÿþ”,尽管第一个条目是“<pat>a cappella”。可能导致这种情况的原因是什么?

    File file = new File("thesaurus.txt");
    Scanner scan;
    try {
        scan = new Scanner(file);
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        scan = null;
    }
    String entry;
    ArrayList<String> thes = new ArrayList<String>();
    while(scan.hasNext())
    {
        entry = scan.nextLine();
        if(entry != "")
        {
             thes.add(entry);
        }
    }
    return thes;

1 个答案:

答案 0 :(得分:3)

Yout输入文件可能是以byte order mark开头的UTF-16(LE)文件。

如果您将此文件视为ISO 8859-1,您会看到这两个字符:ÿþ其中包含代码FFFE的字符编码,这正是当存在UTF-16 BOM时,你会发现。

您应该在阅读文件时明确指定字符编码,而不是依赖于系统的默认字符编码:

scan = new Scanner(file, "UTF-16");