IO字节流和字符流

字节流和字符流的区别

计算机中的一切最终都是以二进制字节形式存在的(计算机的最小存储单位就是字节),对于我们经常操作的字符串,在写入时其实是先得到对应的字节,然后将字节写入到输出流,在读取时其实是先读到的是字节,然后将字节直接使用或者转换为字符给我们使用。由于对于字节和字符两种操作的需求比较广泛,所以Java专门提供了字符流与字节流相关的IO类。

对于程序运行的底层设备来说永远都只接受字节数据,所以当我们往设备写数据时无论是字节还是字符最终都是写的字节流。字符流是字节流的包装类,所以当我们将字符流向字节流转换时要注意编码问题,因为字符串转成字节数组的实质是转成该字符串的某种字节编码。

字符流和字节流的使用非常相似,但是实际上字节流的操作不会经过缓冲区(内存)而是直接操作文本本身,而字符流的操作会先经过缓冲区,然后通过缓冲区再操作文件。因此字节流的效率相对要高一些。

什么是缓冲区

缓冲区就是一段特殊的内存区域,很多情况下当程序频繁的操作一个资源(如文件或数据库)则性能会很低,所以为了提高性能就可以将一部分的数据暂时读写到缓冲区,以后直接冲这个区域中读写数据即可,这样就显著的提升了性能。当我们频繁的操作磁盘对磁盘的损伤也会比较大(磁针需要一段一段的读取数据,针对于机械硬盘),使用缓冲区后,每次可读取一大截数据到缓冲区。

字符流和字节流的使用场景

大多数情况下使用字节流会会更好,因为字符流是字节流的包装,而大多数时候IO操作都是直接操作磁盘文件,所以这些流在传输时是以字节的方式进行的。

如果对于操作需要通过IO在内存中频繁处理字符串的情况下,使用用字符流会好一些,因为字符流具备缓冲区,提高性能。

总而言之,如果需要对文本进行操作使用字符流比较合适,如果对图片,视频,音频等按字节存储使用字节流比较合适。


PS:本片论文借鉴于微信公众号,里面有丰富的Java面试题,喜欢的小伙伴可以关注一下。



       每日鸡汤:不要一味的活在过去无法自拔,人总是要向前看的!

Over!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值