关于java输出流中flush方法的用法
在java开发中,有时我们会进行流的操作,所以可能会经常遇到这样一段代码
out.flush(); out.close();
有时我们只是大概看懂这些,却不知道其中的原理性东西,下面就来理解一下:
flush()这个函数是清空的意思,用于清空缓冲区的数据流,进行流的操作时,数据先被读到内存中,然后再用数据写到文件中,那么当你数据读完时,我们如果这时调用close()方法关闭读写流,这时就可能造成数据丢失,为什么呢,因为,读入数据完成时不代表写入数据完成,一部分数据可能会留在缓存区中。
为了防止过于频繁的写操作 所以Java提供了一个java.io.BufferedOutputStream类 内部持有一个缓冲区 默认不直接将数据写到硬盘上 而是存到缓冲区中 直到一定条件后触发(就是调用上面的flushBuffer()了) 也可以强制通过flush()方法提前触发。
所以当你认为你完成了某一个比较重要的操作的时候 最好进行一次flush 防止数据在内存中丢失。
多数时候,如果你最后会调用一次close方法,flush方法是可以不使用的,除非你明确的想使数据尽早写到磁盘或者网络上。
人多不足以依赖,要生存只有靠自己。
深窥自己的心,而后发觉一切的奇迹在你自己。
凡事皆有终结,因此,耐心是赢得成功的一种手段。