FileWriter进行write()操作时,先将数据写入缓冲区,再刷新写入,为什么还要用BufferedWriter?

直接在newFileWriter()时指定缓冲区大小不就可以了吗?... 直接在new FileWriter()时指定缓冲区大小不就可以了吗? 展开
 我来答
百度网友9f77dcd
推荐于2017-11-27 · 超过10用户采纳过TA的回答
知道答主
回答量:29
采纳率:100%
帮助的人:15.7万
展开全部
BufferedWriter bw = new BufferedWriter(new FileWriter( "filename "));
一般写文件时经常这么用,表示加了一个缓冲,缓冲写满后在将数据写入硬盘,这样做极大的提高了性能
如果单独使用 FileWriter每写一个数据,硬盘就有一个写动作,频繁写硬盘,对性能有影响。
追问
FileWriter也是要先写入默认缓冲区,flush后再写入硬盘的,flush之前数据都在内存中,原理和BufferedWriter一样,为什么Java设计者不在FileWriter构造函数里传递缓冲区大小直接指定缓冲区写入,不就OK了吗?
追答
FileWriter的默认缓冲区是非常小的,如果你写入一个略大于此缓冲区的数据,需要两次写入硬盘的过程,而如果用BufferedWriter只需一次。
最后至于为什么设计者这么设计,还未参透。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式