在读取文件时出现以下异常情况时。
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 传球。两个选项有什么不同?
两个选项的用法有什么不同?
它们之所以不同,是因为下面的javadoc中的 Files.newBufferedReader(Path path, Charset cs)
说。
从文件中读取的Reader方法会在读取到一个畸形的或不可映射的字节序列时抛出IOException。
的javadoc。InputStreamReader
并没有这样说。它是 宽松当他们在Java 7中加入NIO.2语言时,他们决定修复这个缺陷。