关于OutputStreamWriter和BufferedWriter的flush()方法

关于OutputStreamWriter和BufferedWriter的flush()方法

看到上个视频的例子中OutputStreamWriter的包装对象有使用flush()方法,也就是有缓存的,

为啥这里还要再用BufferedWriter再包装一次,相当于包装两次,难道OutputStreamWriter的flush()效率比不上flush(),那为啥OutputStreamWriter也有flush()方法呢

正在回答 回答被采纳积分+1

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

2回答
好帮手慕小尤 2019-12-26 10:48:51

同学你好,OutputStreamWriter类中是有缓冲区的,如:

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

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

当调用OutputStreamWriter类中的write()方法时会调用缓冲区,所以就需要使用flush()方法自刷新流,强制把缓冲写入文件。

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

好帮手慕小尤 2019-12-24 19:13:31

同学你好,OutputStreamWriter是字符流,而BufferedWriter是缓冲流。缓冲流就是将原来的一个一个字节读取,变成放到缓冲流(可配置字节数)进行批量操作,这样和底层的硬盘操作频率变少,效率提高。”从应用的角度,任何减少磁盘活动的策略都有帮助,例如:使用带缓存的输入、输出流以减少读、写操作次数用以减少磁盘交互。

OutputStreamWriter与BufferedWriter类都实现了Flushable接口,如下图所示:在每个输出流都有flush方法,OutputStreamWriter.flush自刷新此输出流,强制把缓冲写入文件。而BufferedWriter.flush自刷新此输出流,将缓冲区的字符的字符或字节流作为预定的目的地。

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

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

  • 提问者 慕无忌8417539 #1
    谢谢,不过我的意思是OutputStreamWriter字符流是不带缓冲的,为啥还要.flush自刷新
    2019-12-26 09:37:33
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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