Java:InputStream读取文本文件内容出现乱码问题的解决方法

今天,使用字节输入流InputStream来读取一个文本文件的内容,然后复制到另一个文件里,实现文件复制这样的一个需求。但是,在实际操作的时候,发现复制后的文件的内容部分乱码 
我的代码: 

ä¸ä¸ªç®åçå¤å¶æ件ç代ç 

然而实际效果却让我不明所以。 
这是呵呵.txt的内容 
è¿éåå¾çæè¿° 

复制后的茶道.txt的内容却是 

è¿éåå¾çæè¿°

分析一下,中文能出来,说明不是字符集问题,但是就是某些汉字会乱码。询问老师后,老师告诉我,这是因为一个汉字是2-4字节,而空格之类的是半个字节,缓冲区是12字节,有可能是读到了半个汉字,就会出现这种结果。 
好吧,知道了问题出在哪后,就来解决吧 
方法一: 
使用转换流 
转换流:将字节输入输出流转换成字符输入输出流 
有两个,分别是InputStreamReader(InputStream in)【字节输入转换流】 
OutputStreamWriter(OutputStream out)【字节数出转换流】 
作用:解决文件读取时出现的中文乱码问题 
就像这样 
è¿éåå¾çæè¿° 

需要注意的是,它把字节输入流转换成字符输入流,所以缓冲区也就相应变成字符数组 
效果如下 

è¿éåå¾çæè¿° 

方法二: 
扩大缓冲区容量,一次性存储完整个内容 
è¿éåå¾çæè¿° 

这里我把缓冲区容量扩大到512,能够装下整个文件内容,结果就好了 

è¿éåå¾çæè¿° 

好了,问题应该能够解决。如果不可以,可以查看是不是文件的字符集出问题了,右键文件的Properties里面的Text File enconding是不是有问题。

 原文链接:https://blog.csdn.net/cslucifer/article/details/76595449

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值