我正在尝试使用流来读取文件,但我无法通过异常。我一直在四处寻找,但我无法理解为什么会被抛出。
我要阅读的文件是file.txt
,它是用UTF-8编码的。
我正在使用Files.lines()
阅读它:
String path = FileWordCount.class.getResource("file.txt").getPath().substring(1);
Files.lines(Paths.get(path), Charset.forName("UTF-8")).forEach(System.out::println);
尝试阅读文件时,我收到以下异常:
Exception in thread "main" java.io.UncheckedIOException: java.nio.charset.MalformedInputException: Input length = 1
[...]
Caused by: java.nio.charset.MalformedInputException: Input length = 1
通常情况下,我不会发布有关例外的简单问题,但我只是想出这个问题。
答案 0 :(得分:3)
UncheckedIOException
正在包裹MalformedInputException
- 这是一个错误的错误。 JavaDoc就是这样说的:
当输入字节序列不合法时抛出检查异常 给定字符集,或输入字符序列不合法 十六位Unicode序列。
因此,您的file.txt
不包含有效的UTF-8,并导致UTF-8解码器报告错误。