IO相关问题 BufferedWriter对象 什么时候要调用flush 什么时候不用调用

mstcomputer 2011-12-04 07:16:00
看IO看到吐血!!
BufferedWriter对象调用完write方法为什么还要调用flush?难道write方法没有完全完成?请高手给我讲讲其中的原理
另外麻烦不吝赐教:IO要注意哪些重要的知识点?容易形成哪些误区?
...全文
1242 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
huntor 2011-12-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 chianfirstli 的回复:]

如果你关闭了字符流就不用的用flush如果你不关闭字符流的话只能刷新后才能写入,字符流用到了缓冲区,二字节流是不用缓冲区呢
[/Quote]

不要无视 java.io.BufferedOutputStream。
噢噢噢噢 2011-12-04
  • 打赏
  • 举报
回复
BufferedWriter对象调用完write方法为什么还要调用flush?难道write方法没有完全完成?
1.不是必须调用flush
2.write方法只是写到了BufferedWriter底层维护的一个数组中,flush才写到目的端
kouyiSC 2011-12-04
  • 打赏
  • 举报
回复
为了提高效率,写入的数据会先放入缓冲区,然后写入文件。所以有时需要主动调用flush()方法, 不一定writer后一定要调用flash,close执行会flash的。。。。。

如批量执行一个道理。。。flash是为了减少缓冲区堆积过多数据。。。造成溢出。。。。。。。
magong 2011-12-04
  • 打赏
  • 举报
回复
可以不flush,
当你做flush的时候,是着急write出去的东西老是停留在缓冲区,未及时写入真正的目的地。
这些并不难懂,
如果涉及到IO多线程、字符集编码,则会麻烦一些。
龙腾冰 2011-12-04
  • 打赏
  • 举报
回复
如果你关闭了字符流就不用的用flush如果你不关闭字符流的话只能刷新后才能写入,字符流用到了缓冲区,二字节流是不用缓冲区呢
zhouchong0925 2011-12-04
  • 打赏
  • 举报
回复
flush是清空缓冲区,就是说立即输出到输出目的地,而不是等缓冲区满了再输出,write只是将数据输出到缓冲区,还没有输出到目的地。

62,630

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧