java文件读者_java – 使用Files.newBufferedReader()读取文件并直接构建读者的不同结果...

当尝试用Files.newBufferedReader()读取包含非UTF-8字符的文件时,会抛出MalformedInputException。相比之下,通过InputStreamReader构造的BufferedReader能读取该文件,但可能会显示乱码。文章讨论了两种方法在处理非标准编码文件时的行为差异,并询问是否有可能使Files.newBufferedReader()具有宽松的编码检测行为。
摘要由CSDN通过智能技术生成

看起来Files.newBufferedReader()对于UTF-8比对天真的替代方案更严格.

如果我创建一个单字节128的文件—所以,不是一个有效的UTF-8字符—如果我在Files.newInputStream()的结果上在InputStreamReader上构造一个BufferedReader,那么很高兴会被读取,但是Files.newBufferedReader()抛出异常.

这段代码

try (

InputStream in = Files.newInputStream(path);

Reader isReader = new InputStreamReader(in, "UTF-8");

Reader reader = new BufferedReader(isReader);

) {

System.out.println((char) reader.read());

}

try (

Reader reader = Files.newBufferedReader(path);

) {

System.out.println((char) reader.read());

}

有这个结果:

Exception in thread "main" java.nio.charset.MalformedInputException: Input length = 1

at java.nio.charset.CoderResult.throwException(CoderResult.java:281)

at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:339)

at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)

at java.io.InputStreamReader.read(InputStreamReader.java:184)

at java.io.BufferedReader.fill(BufferedReader.java:161)

at java.io.BufferedReader.read(BufferedReader.java:182)

at TestUtf8.main(TestUtf8.java:28)

这记录了吗?是否可以使用Files.newBufferedReader()获得宽松的行为?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值