A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ljhheima 中级黑马   /  2012-11-25 00:02  /  1855 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

FileWriter中有两个函数
close:关闭流
flush:刷新流。
当我们调用write方法时,如果没有调用close或者flush,我们操作的文件很可能没有我们想写入的数据。
这很明显地说明了FileWriter中有一个缓冲区。尤其flush函数,完全暴露了缓冲区的存在。


那BufferedWriter有什么作用?视频教程中没有说明。

这首先要知道FileWriter调用write方法时,它需要将写入的字符以给定的字符集编码为字节,再写进文件。
写进文件前需要一个缓冲区,保存我们要写进的字节,直到我们调用close或者flush时,才将缓冲区的数据存进硬盘,
减少硬盘的读写,提高效率。这缓冲区就是FileWriter的缓冲区。

BufferedWriter:
将写入的字符以给定的字符集编码为字节,需要调用编码转换器,如果我们设一个缓冲区保存要转换的字符,那可以减少
对编码转换器的调用。就是提高效率。这个缓冲区就是BufferedWriter的缓冲区。

BufferedWriter是后期对FileWriter性能的增强,利用装饰设计模式,传入FileWriter对象,增强FileWriter的性能。

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 赞一个!

查看全部评分

3 个回复

正序浏览
大哥,我是卢嘉鸿,这我也不懂啊
回复 使用道具 举报
那我问你
1.BufferedInputStream 与 FilterInputStream 的不同,后者有没有缓冲区?
2.flush()的方法从哪来?给谁用, FilterInputStream 有没有flush()方法,在这有什么用?
回复 使用道具 举报
值得学习ing!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马