为什么输入输出步骤多了反而更快?

为什么输入输出步骤多了反而更快?

学到后面又重新回来学习理解输入输出流,有下面这一问题

由于输入输出过程相反,仅以输出为例,个人理解为:

Program---调用write函数---BufferedOutputStream----FileOutputStream---File

引入缓冲流后过程是 由程序写数据X到 缓冲输出流 然后 缓冲输出流 到 文件输出流  最后到 文件

而 不采用缓冲流是   Program---调用write函数---FileOutputStream---File,即相同路径少一个缓冲流

为什么中间经过缓冲流,后面的过程也一样,多了一个步骤反而能更快??


正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,加上缓冲流后,可以这样理解:

使用缓冲处理流包装就是一堆一堆的干活,还能不用CPU多次处理数据转换,只是设置一下数据转换成功后的文件。

     不使用缓冲处理流包装就是CPU就会傻傻的一个字节一个字节循环来干活存储写入文件中,相比可见效率明显变慢。

由上述内容可知,使用缓冲流后,速度会加快。

http://img1.sycdn.imooc.com//climg/5f1949290943be8207770263.jpg

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 输出流是因为写入到磁盘可以理解,但是输入流不是先用fileOutputStream一个一个读取过来的吗,这个时候你再加一个缓冲流的作用是什么

    2021-05-27 12:25:49
  • 同学你好,输入缓冲流是同样的道理,在读取时是一个一个读取,但是在读取时,比如

    read(char[] cbuf, int off, int len) 方法:

    http://img1.sycdn.imooc.com//climg/60af471e0927716403350059.jpg

    在读取时,会重复地调用底层流的 read 方法,尝试读取尽可能多的字符,将读取到的数据放在一个缓存区域中,提高读取效率。

    祝学习愉快!

    2021-05-27 15:18:11
py_builder 提问者 2020-07-23 11:37:19

Program---调用write函数---BufferedOutputStream----FileOutputStream---File

当然也有可能是我这个路径是错误的,想到一个解释,附上原代码

FileOutputStream fo = new FileOutputStream("a.txt");

BufferedOutputStream bo=new BufferedOutputStream(fo);

bo.write(123);

在创建BufferedOutputStream对象时,实际上实现了  文件输出流 到  缓冲输出流

即  真正路径应该是

Program---调用write函数---FileOutputStream---BufferedOutputStream----File


我的想法是否正确??

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师