为什么有的输出流需要flush,有的却不需要?

xubingok 2011-10-10 08:22:07
BufferedWriter bw = new BufferedWriter(new FileWriter("test.txt"));
bw.write("HelloWorld");
这个流不需要flush和close,就能把HelloWorld写入到文件中
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("test.txt"));
byte[] bt = {1,2,3,4,5,6};
bos.write(bt);
这个流却必须加上flush才能在文件中看到写入.

这是为什么呢?
...全文
1473 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
孟祥月 2011-10-10
  • 打赏
  • 举报
回复
第一个自动刷新 第二个你必须自己刷新或者流中的数据放满了才会刷新
zqfddqr 2011-10-10
  • 打赏
  • 举报
回复
自动帮你flus了啊.
24K純帥 2011-10-10
  • 打赏
  • 举报
回复
刷新此流。如果此流已保存缓冲区中各种 write() 方法的任何字符,则立即将它们写入预期目标。然后,如果该目标是另一个字符或字节流,则将其刷新。因此,一次 flush() 调用将刷新 Writer 和 OutputStream 链中的所有缓冲区。
TKD03072010 2011-10-10
  • 打赏
  • 举报
回复
BufferedWriter 的 write 会自动刷新缓冲区
而BufferedOutputStream 不会自动刷新缓冲区 需要添加flush

62,630

社区成员

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

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