这个问题在这里已经有答案了:
files.readallbytes vs files.lines获取格式错误的输入异常(4个答案)
四年前关门了。
我试图使用流读取文件,但我无法通过异常。我四处看了看,但我就是不明白为什么要扔。
我要读的文件是 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
通常我不会发布关于异常的简单问题,但我只是想办法解决这个问题。
1条答案
按热度按时间jgzswidk1#
这个
UncheckedIOException
正在 Package 一个MalformedInputException
-这就是解锁错误。javadoc上说:当输入字节序列对于给定字符集不合法,或输入字符序列不是合法的16位unicode序列时引发的检查异常。
所以你的
file.txt
不包含有效的utf-8,并导致utf-8解码器报告错误。