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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

在操作流的时候,有时候关闭流可以写进文件,有时候flush可以写进文件,有什么区别?
   
还是两个必须都执行?什么时候使用flush和close(),有些混乱!!!

点评

认真看视频吧。里面讲得太详细了。  发表于 2014-6-11 21:55

6 个回复

倒序浏览
首先  当你用到flush,可以判定你肯定使用的是 字符流操作
回复 使用道具 举报
不好意思  用了快速回复   重新写
对于字符流的写入方式,当你调用write方法的时候数据其实是写入数据缓存中但是还没有写入硬盘上, flush方法是把缓存中的数据写入硬盘。
你要写入硬盘,必然要调用操作系统的资源吧,close方法是完成操作后,告诉操作系统资源调用完了,我们需要资源了。同时调用close方法的时候会先默认调用flush方法。
简而言之,就是flush写入硬盘,不归还操作系统资源,还可以继续操作;close写入硬盘,归还操作系统资源,结束操作
OVER~
回复 使用道具 举报
flush:强行将缓冲区里面的数据写出。缓冲区是存满了再往硬盘里面写数据的,但经常会碰到最后一些数据不会刚好存满的情况,这时候就用flush强行将缓冲区里面剩余的数据写到磁盘上。
举例:缓冲区像一个杯子,数据是水壶,每次水壶的水装满杯子,人再喝,但最后一次只有半杯水,于是这时候需要用到flush,使最后半杯水也能直接被喝掉。
close就是关闭流,用上述例子来说,就是最后半杯水不要了,缓冲区未存满导致未写出的数据丢失。
所以 关流之前一定要先flush一下。
回复 使用道具 举报 1 0
上边都告诉你了为什么要使用flush的原理,我就给你个小诀窍什么时候用flush?当你调用了windows操作文件的资源时,就要记得close掉,想StringReader这是,它的源是内存而没有操作文件就不用close.
而flush的话,有的流必须要flush才出来,有的调用close()方法后也会出来,你就在Eclipse上面按F3看看该对象的close源码,若源码中调用了flush你就不用再次调用了,源码中没有的话,你自己就手动调用下。
回复 使用道具 举报
a6217815 发表于 2014-6-11 11:06
flush:强行将缓冲区里面的数据写出。缓冲区是存满了再往硬盘里面写数据的,但经常会碰到最后一些数据不会 ...

谢谢你的总结
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马