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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zhouxp3323 黑马帝   /  2012-3-25 22:34  /  2030 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我看毕老师讲缓冲区的时候都在后面写了flush()方法,缓冲区的close方法在关闭流的时候不也会
刷新的吗,我试了下不写flush方法,结果还是一样啊!

5 个回复

倒序浏览
写了close();方法就不用写flush();了  flush()是刷新缓冲区的,close()是关闭数据流的,在关闭前是先刷新的。
回复 使用道具 举报
在调用close方法时候,可以看成先调用flush方法,在关闭缓冲区。
所以效果一样。
在输入流的缓冲区中,关闭前会刷新。
而在输出流的缓冲区,关闭请不用刷新。
回复 使用道具 举报
首先缓冲区的使用是为了实现高效。缓冲区是要刷新的,是要写flush()的,缓冲流close()关闭后,不用再关源流。就像所有的水都是先倒入缓冲区这个杯子里,再倒入别的容器。缓冲区不再有水,相当于源流自动关闭。
回复 使用道具 举报
有这么一种情况是, 你需要马上把流中的东西写出去,但不能关流,这个时候就用到了flush()
回复 使用道具 举报
flush()刷新缓冲区,输出流,类似于一根管道,输出的时候先放到管道里,然后管道满了存到介质上(硬盘或其他地方),当我们输出完后管道里面可能还有剩余,就用flush()清空管道即全部存到介质上。好象java默认的缓冲区是8kb?(我也忘了),就是说只有每填满8kb才会提交一次,当少于这个值时就不会提交,所以最后为防止有未提交数据就flush()一下,强行提交生于数据,也就是说,一般输出流关闭之前要用下这个方法。  
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马