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

标签 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

通常我不会发布关于异常的简单问题,但我只是弄清楚这个问题。

最佳答案

UncheckedIOException 包装了一个MalformedInputException - 这是隐含的错误。 JavaDoc 说:

Checked exception thrown when an input byte sequence is not legal for given charset, or an input character sequence is not a legal sixteen-bit Unicode sequence.

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

关于Java 8 使用流 java.io.UncheckedIOException 读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37136973/

相关文章:

java - 使用流更改 ArrayList 中对象字段的值,使代码更高效

java - ionic Android 构建停止工作

java - sourcepath 和只指定源文件的区别?

c - 打印文件中前 10 个重复出现的单词

Java 8 功能接口(interface)命名约定?

Java 1.8.20 编译器错误

java - JSF f :ajax and IE 8

java.lang.InternalError 安卓

PHP PDO 未从 MSSQL 存储过程调用中找到 OUTPUT 参数

python-3.x - 如何让dill在python3中加载python2 pickle