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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© space2007 初级黑马   /  2014-7-24 00:19  /  9132 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 space2007 于 2014-7-24 10:07 编辑

在看毕老师的视频时,发现毕老师说文件比较小,就不用刷新了(调用flush方法),调用close方法时会刷新将数据写入目的地。

flush方法的作用是将内存缓冲区中的数据真正写到目的地中,查看Writer源代码发现定义了一个1024的buffer,是不是说所操作的文件大于1k时必须要刷新呢?

flush什么时候可以不调用?

6 个回复

倒序浏览
应该是Writer的时候都要用到的,要不然写不到文件中去,这个不看文件大小吧
回复 使用道具 举报
按我的做法,全刷……
回复 使用道具 举报
付江涛 来自手机 金牌黑马 2014-7-24 08:51:11
板凳
因为close()就是关闭流之前刷新流。 因为操作的文件大于1k,需要循环几次才能写入完毕,所以需要每次循环最后刷新一下。当循环一次就足够时,只在最后需要close(),关闭留并且刷新。
回复 使用道具 举报
你写的文件较大时,在循环内flush,最后再close
回复 使用道具 举报
我从来不刷,实际上API文档已经说了,只要你写入的数据超过缓冲区容量,缓冲区之前的内容就会自动flush,根本无需手动刷。
回复 使用道具 举报
晓风 中级黑马 2014-7-24 19:34:40
7#
你可以在每写1k的时候就循环一次就调用一次,当你关闭流的时候,也会调用一次flush然后再关闭流。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马