黑马程序员技术交流社区

标题: BufferWriter [打印本页]

作者: love$$-IT    时间: 2015-3-3 00:11
标题: BufferWriter
在用BufferWriter时,不用flush方法,会对程序造成什么影响吗?
作者: doomsday    时间: 2015-3-3 01:25
通过测试可知道:当数据量很小的时候,不用flush并且不close时,数据无法写入指定文件,必须flush或者close。如果数据量大的时候,不用flush不用close都可以将数据写入到指定文件
作者: qq10763582    时间: 2015-3-3 09:28
无法将数据写入文件中
作者: 笑望长空,逆转    时间: 2015-3-3 09:49
如果最后用close则会显示结果,如果没有用close,也没有flush不会显示。
作者: zfgrinm    时间: 2015-3-3 13:42
doomsday 发表于 2015-3-3 01:25
通过测试可知道:当数据量很小的时候,不用flush并且不close时,数据无法写入指定文件,必须flush或者close ...

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

我也想知道为什么
作者: 绝望    时间: 2015-3-3 15:33
zfgrinm 发表于 2015-3-3 13:42
为什么会是这样的呢,求指教...

我个人的理解是BufferWriter使用的缓冲区,缓冲区肯定是有大小限制的,满了以后自动刷新写入到硬盘,然后自动清空缓冲区
作者: 菜鸟一号    时间: 2015-3-3 15:41
最后一行不能输出,你试了就知道
作者: zfgrinm    时间: 2015-3-3 16:17
绝望 发表于 2015-3-3 15:33
我个人的理解是BufferWriter使用的缓冲区,缓冲区肯定是有大小限制的,满了以后自动刷新写入到硬盘,然后 ...

那如果没有close,最后一行应该没有存储吧?
作者: 绝望    时间: 2015-3-3 16:26
zfgrinm 发表于 2015-3-3 16:17
那如果没有close,最后一行应该没有存储吧?

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

当文件过大缓冲区数据满了会将数据写入进去的,为了节省资源可以把代码写成多少个字符flush一次。




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