Java 8使用流java.io.UncheckedIOException读取文件

时间:2016-05-10 11:16:54

标签: java io java-8

我正在尝试使用流来读取文件,但我无法通过异常。我一直在四处寻找,但我无法理解为什么会被抛出。

我要阅读的文件是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 个答案:

答案 0 :(得分:3)

UncheckedIOException正在包裹MalformedInputException - 这是一个错误的错误。 JavaDoc就是这样说的:

  

当输入字节序列不合法时抛出检查异常   给定字符集,或输入字符序列不合法   十六位Unicode序列。

因此,您的file.txt不包含有效的UTF-8,并导致UTF-8解码器报告错误。