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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© love$$-IT 中级黑马   /  2015-3-3 00:11  /  1436 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在用BufferWriter时,不用flush方法,会对程序造成什么影响吗?

12 个回复

倒序浏览
通过测试可知道:当数据量很小的时候,不用flush并且不close时,数据无法写入指定文件,必须flush或者close。如果数据量大的时候,不用flush不用close都可以将数据写入到指定文件

评分

参与人数 1黑马币 +1 收起 理由
万合天宜 + 1 很给力!

查看全部评分

回复 使用道具 举报
无法将数据写入文件中

评分

参与人数 1黑马币 +35 收起 理由
fantacyleo + 35 赞一个!

查看全部评分

回复 使用道具 举报
如果最后用close则会显示结果,如果没有用close,也没有flush不会显示。
回复 使用道具 举报
doomsday 发表于 2015-3-3 01:25
通过测试可知道:当数据量很小的时候,不用flush并且不close时,数据无法写入指定文件,必须flush或者close ...

为什么会是这样的呢,求指教...
回复 使用道具 举报
感觉主要是小数据的时候通过和close配合使用来提高写入文件速度的。
回复 使用道具 举报
doomsday 发表于 2015-3-3 01:25
通过测试可知道:当数据量很小的时候,不用flush并且不close时,数据无法写入指定文件,必须flush或者close ...

我也想知道为什么
回复 使用道具 举报
zfgrinm 发表于 2015-3-3 13:42
为什么会是这样的呢,求指教...

我个人的理解是BufferWriter使用的缓冲区,缓冲区肯定是有大小限制的,满了以后自动刷新写入到硬盘,然后自动清空缓冲区
回复 使用道具 举报
最后一行不能输出,你试了就知道
回复 使用道具 举报
绝望 发表于 2015-3-3 15:33
我个人的理解是BufferWriter使用的缓冲区,缓冲区肯定是有大小限制的,满了以后自动刷新写入到硬盘,然后 ...

那如果没有close,最后一行应该没有存储吧?
回复 使用道具 举报
zfgrinm 发表于 2015-3-3 16:17
那如果没有close,最后一行应该没有存储吧?

不一定是最后一行,缓冲区的大小是可以指定的
回复 使用道具 举报
doomsday 发表于 2015-3-3 01:25
通过测试可知道:当数据量很小的时候,不用flush并且不close时,数据无法写入指定文件,必须flush或者close ...

当文件过大缓冲区数据满了会将数据写入进去的,为了节省资源可以把代码写成多少个字符flush一次。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马