关于java输出流中flush方法的用法

在java开发中,有时我们会进行流的操作,所以可能会经常遇到这样一段代码

out.flush();  
out.close(); 

  有时我们只是大概看懂这些,却不知道其中的原理性东西,下面就来理解一下:

      flush()这个函数是清空的意思,用于清空缓冲区的数据流,进行流的操作时,数据先被读到内存中,然后再用数据写到文件中,那么当你数据读完时,我们如果这时调用close()方法关闭读写流,这时就可能造成数据丢失,为什么呢,因为,读入数据完成时不代表写入数据完成,一部分数据可能会留在缓存区中。

为了防止过于频繁的写操作 所以Java提供了一个java.io.BufferedOutputStream类 内部持有一个缓冲区 默认不直接将数据写到硬盘上 而是存到缓冲区中 直到一定条件后触发(就是调用上面的flushBuffer()了) 也可以强制通过flush()方法提前触发。

所以当你认为你完成了某一个比较重要的操作的时候 最好进行一次flush 防止数据在内存中丢失。

多数时候,如果你最后会调用一次close方法,flush方法是可以不使用的,除非你明确的想使数据尽早写到磁盘或者网络上。

posted @ 2017-04-12 16:33  有丶丶小帅  阅读(4864)  评论(0编辑  收藏  举报
Live2D