【问题标题】:Java 8 read file using streams java.io.UncheckedIOException [duplicate]Java 8使用流java.io.UncheckedIOException读取文件[重复]
【发布时间】:2016-05-10 11:16:54
【问题描述】:

我正在尝试使用流来读取文件,但我无法通过异常。我一直在环顾四周,但我就是不明白它为什么会被抛出。

我要读取的文件是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

通常我不会发布有关异常的简单问题,但我只是想出这个问题。

【问题讨论】:

标签: java io java-8


【解决方案1】:

UncheckedIOException 正在包装 MalformedInputException - 这是根本错误。 JavaDoc 说:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-10
    • 2011-09-10
    • 2017-07-24
    • 1970-01-01
    • 1970-01-01
    • 2015-12-14
    • 2015-10-21
    • 2016-07-17
    相关资源
    最近更新 更多