我正在用Java创建一个简单的单词计数程序,该程序可以读取目录中基于文本的文件。
但是,我不断收到错误:
java.nio.charset.MalformedInputException: Input length = 1
从这行代码:
BufferedReader reader = Files.newBufferedReader(file,Charset.forName("UTF-8"));
我知道可能是因为我使用的
Charset
在文本文件中不包含某些字符,其中一些包含其他语言的字符。但我想包括那些字符。后来我在JavaDocs上了解到
Charset
是可选的,仅用于更有效地读取文件,因此我将代码更改为:BufferedReader reader = Files.newBufferedReader(file);
但是某些文件仍然抛出
MalformedInputException
。我不知道为什么我想知道是否有一个包含所有内容的
Charset
,它将允许我阅读带有许多不同类型字符的文本文件吗?谢谢。
最佳答案
您可能需要一个受支持的编码列表。对于每个文件,依次尝试每种编码,可能以UTF-8开头。每次您捕获MalformedInputException
时,请尝试下一种编码。