java - 使用 StandardCharset UTF-8 处理格式错误的异常

标签 java character-encoding nio

读取文件时出现如下异常,

java.nio.charset.MalformedInputException - Input length = 1

在获取阅读器时使用以下选项有什么区别?

选项 1:

return Files.newBufferedReader(Paths.get(filePath), StandardCharsets.UTF-8);

选项 2:

return new BufferedReader(new InputStreamReader(new FileInputStream(filePath), "UTF-8"));

选项 1 仍然返回错误,而选项 2 通过。这两个选项有何不同?

最佳答案

How are both options different?

它们是不同的,因为Files.newBufferedReader(Path path, Charset cs)的javadoc说:

The Reader methods that read from the file throw IOException if a malformed or unmappable byte sequence is read.

InputStreamReader 的 javadoc没有这么说。这是宽松,他们决定在 Java 7 中将 NIO.2 添加到语言中时修复该缺陷。

关于java - 使用 StandardCharset UTF-8 处理格式错误的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61402450/

相关文章:

java - Servlet 不执行 response.sendRedirect(addressPath); , 但确实执行没有路径的 response.sendRedirect()

java - 如何检查我的系统上是否安装了 JDBC?

java - 在Java中获取ASCII-6编码

c# - 撇号通过 C# 中的过滤器

java - 如何使2个不相关的实体(两个存储库)同时在一个项目中运行?是否可以?

ž 的 Html 实体代码

java - java.nio.file.Files类中exists()方法的行为

java - Linux 机器上 Netty 4.1 的性能调优

java - Java 中 Filewatcher 是否被视为非阻塞 IO?

java - 递归求解随机迷宫