在Android流中使用flush()close()的好处?

War*_*zit 12 android inputstream outputstream

我知道一般的想法,但我不确定它是否有影响,因为Android api声明如下:"刷新此流.此方法的实现应确保写出任何缓冲的数据.此实现什么都不做."

这种实现没有任何作用< - 这是否意味着它无用或者我错过了什么?

Mar*_*era 5

如果您阅读有关oracle的扩展文档

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

刷新此输出流,并强制写出所有缓冲的输出字节。刷新的一般约定是,调用它的指示是,如果先前写入的任何字节已由输出流的实现缓冲,则应立即将这些字节写入其预期的目标。

OutputStream的flush方法不执行任何操作。

意味着,该方法本身不执行任何操作,并且它是抽象的,因此任何基础类都可以实现自己的刷新流版本并强制其进行写入(而不是在写入队列中等待)

但是无论如何,正如纪尧姆(Guillaume)指出的,无论如何都称呼它是一个好习惯。如果稍后再用其他使用流的实现替换流,那么您将感到抱歉。

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

flush()在FileOutputStream上不执行任何操作。它仅对缓冲流有用。

并且从javadoc的close(),只是要注意,如果您要在之后立即关闭流,则不必刷新流。

关闭流,先冲洗。关闭流后,进一步的write()或flush()调用将导致引发IOException。但是,关闭先前关闭的流无效。

相关:在java.io.FileWriter中
写入大文件刷新时,FileOutputStream.close确实很慢

  • 无论如何都称呼它是一个好习惯。如果稍后再用其他使用流的实现替换流,那么您将感到抱歉。 (3认同)