黑马程序员技术交流社区

标题: 很多人不理解的BufferedWriter [打印本页]

作者: ljhheima    时间: 2012-11-25 00:02
标题: 很多人不理解的BufferedWriter
FileWriter中有两个函数
close:关闭流
flush:刷新流。
当我们调用write方法时,如果没有调用close或者flush,我们操作的文件很可能没有我们想写入的数据。
这很明显地说明了FileWriter中有一个缓冲区。尤其flush函数,完全暴露了缓冲区的存在。


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

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

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

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

作者: 许庭洲    时间: 2012-11-25 07:43
值得学习ing!
作者: 郝少普    时间: 2012-11-26 22:41
那我问你
1.BufferedInputStream 与 FilterInputStream 的不同,后者有没有缓冲区?
2.flush()的方法从哪来?给谁用, FilterInputStream 有没有flush()方法,在这有什么用?
作者: ljhheima    时间: 2012-11-27 09:38
大哥,我是卢嘉鸿,这我也不懂啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2