当我尝试读取 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;
最佳答案
Yout 输入文件可能是一个以 byte order mark 开头的 UTF-16 (LE) 文件。 .
如果您查看此文件,就好像它是 ISO 8859-1您将看到这两个字符:ÿþ,在该字符编码中具有代码 FF
和 FE
,这正是存在 UTF-16 BOM 时您所期望的。
读取文件时应显式指定字符编码,而不是依赖系统的默认字符编码:
scan = new Scanner(file, "UTF-16");
关于Java IO 无法读取文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28638582/