最简单的IO解析

对于IO流主要分三方面进行解析

1、输入流与输出流
输入流与输出流主要的父类是InputStream和OutputStream,其他流类主要是由这两个类派生出来。输入流和输出流我们打个比方,我们再淘宝买了一套家具(柜子、床、沙发这些),在出发前,卖家把这些都拆成小块,方便物流货车装载,这就像我们的输入流把大的文件转成二进制流,货车就是传输通道,然后我们收到货后,把这些家具重新组装起来,形成和拍下淘宝货物一样的状态,这就像输出流,把流再转成文件以供用户使用。
卖家给我们发货的时候,肯定不会一个床板就派一辆车的,所以他等把东西拆到货车刚好装满的时候,这辆车就发车了,剩下的还是按照相同步骤,拆满发车。这个过程就是用到了缓冲区,就像文件转成流后,如果你一个字节一个字节的传输,是不是觉得很慢,要是卖家也这样一件一件的给你把拆分的家具发过来,估计你要等到花都谢了。如果,流里面用个数组储存一定大小后按照该数组大小读取字节流,那减少交互次数,效率也提高很多。BufferedInputStream和BufferedOutputStream就是高效的缓冲流,可提高读写效率。

2、字节流与字符流
字节流的祖先是InputSteam和OutputSteam,而字符流的祖先是Reader和Writer。字节流处理最基本的单位为字节,采用的是ASCII,而字符流处理最基本的单位是Unicode码元(两个字节)。一般我们处理二进制文件如音频、文件这些会使用字节流。如果要读取或写入的是中文的话,那就需要使用字符流了,因为大多中文都是占两个字节或更过,如果使用字节流读取的话会读取不完整,虽然最后还是得转字节流,但是是先用将中文转成字符流,再将字符流转换成字节的形式。直接将中文转成字节流的话,ASCII码表最多只能对应256个汉字,是无法满足中文的需求的。

3、原始流与包装流
原始流与包装流我是这样理解的,原始流就像这个河水,包装流就像这个自来水厂,我们平时虽然也可以用河水来煮饭,但是我们拿到河水的时候,是不是需要先经过过滤、消毒等多道工序,然后水质合格后才拿来煮饭,我们自己处理就太麻烦了。而包装流的就起到这样一个作用,河水(原始流)经过自来水厂(包装)的处理,形成自来水(包装流),我们就可以直接拿来煮饭了。也就是我们拿到的包装流更方便我们使用了。如BufferedInputStream这个缓冲流就是包装流。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值