使用StandardCharset UTF-8来处理畸形异常。

问题描述 投票:0回答:1

在读取文件时出现以下异常情况时。

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

在获取阅读器的过程中,以下几种方案的用法有什么不同?

方案一:使用

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

方案二:

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

选项一 仍然返回错误,而 备选方案2 传球。两个选项有什么不同?

java character-encoding nio
1个回答
0
投票

两个选项的用法有什么不同?

它们之所以不同,是因为下面的javadoc中的 Files.newBufferedReader(Path path, Charset cs) 说。

从文件中读取的Reader方法会在读取到一个畸形的或不可映射的字节序列时抛出IOException。

的javadoc。InputStreamReader 并没有这样说。它是 宽松当他们在Java 7中加入NIO.2语言时,他们决定修复这个缺陷。

© www.soinside.com 2019 - 2024. All rights reserved.