转换流InputStreaReader和OutputStreaWriter的作用解析

InputStreamReader和OutputStreamWriter提供了将字节流转换成字符流的方法,并且可以指定编码格式

直接上例子:

假如有一个文本文件,里面是存放的是utf-8的“你好,world”

用InputStreamReader(InputStream,编码格式),就可以传入一个字节流对象和编码格式(不传入编码格式的话就是IDEA设置的编码格式,默认是系统的默认格式),调用read方法的时候实际干活的是传入的字节流对象,但是它会将读取到的一个或多个字节返回(utf--8中文占3个字节,英文1个字节),read返回的就是按照传入的编码格式解析得到的一个int型数字,将该数字强制转换为char就会得到对应的字符,循环read,当读取到文件末尾时,就会返回-1,这样,就可以把“你好,world”完整的得到

如果是用InputStream的read方法,一次就只能读取一个字节,如果是英文,倒没什么影响,因为英文只占1个字节,但是如果是中文的话,占3个字节,read方法并不会将这3个字节合起来解析为一个中文,而是将他们分开解析,那就会造成乱码

OutputStreamWriter也是一样的道理,传入的是一个OutputStream的对象,也可以指定编码格式,

使用writer方法时,可以按照指定的编码写入一个字符串,实际干活的还是传入的OutputStream字节流对象

有人可能会问:OutputStreamWriter和FileWriter在功能上有什么区别?

区别不大,FileWriter是OutputStreamWriter的父类,区别在于OutputStreamWriter可以指定写入字符的编码格式,还有一些其他的区别

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值