Androidstream中使用flush()close()的好处?

我知道一般的想法,但是我只是不确定是否因为Android API规定了如下的效果:“刷新这个stream,这个方法的实现应该确保任何缓冲的数据都被写出来,这个实现什么都不做。

这个实现什么都不做< – 这是否意味着它没有用处或者我错过了什么?

Solutions Collecting From Web of "Androidstream中使用flush()close()的好处?"

如果你阅读oracle的扩展文档

http://download.oracle.com/javase/1.4.2/docs/api/java/io/OutputStream.html#flush(&#xFF09;

刷新这个输出stream并强制任何缓冲的输出字节被写出。 flush的一般契约是调用它是一个迹象,如果任何先前写入的字节已经被输出stream的实现缓冲,那么这些字节应该立即被写入到它们的预期目的地。

OutputStream的flush方法什么都不做。

意思是,这个方法本身什么都不做,而且是抽象的,所以任何底层的类都可以实现它自己的刷新stream版本并强制它们写(不等待写队列)

但无论如何,正如纪尧姆所指出的那样,无论如何,这是一个很好的习惯。 如果以后,用另一个使用它的实现replace你的stream,那么你会后悔的。

根据操作系统的不同,flush()只会强制将数据写入操作系统。

flush()在FileOutputStream上不做任何事情。 它只对缓冲stream有用。

并从close() javadoc,只是要注意,你不必刷新stream,如果你立即closures它。

closuresstream,首先冲洗它。 一旦stream被closures,进一步的write()或者flush()调用将会抛出一个IOExceptionexception。 closures以前closures的stream,但是,没有效果。

有关:
写入大文件时,FileOutputStream.close非常慢
在java.io.FileWriter中刷新