java中filewriter的flush和close函数之间的区别

我需要知道Java中flush和close函数之间的确切区别是什么?

并且在写入文件期间将数据转储到文件中?

请举一个例子

flush()将缓冲区的内容写入目标,并使缓冲区为空,以便存储更多数据,但不会永久关闭流。 这意味着您仍然可以向流中写入更多数据。

但close()会永久关闭流。 如果要进一步编写一些数据,则必须再次重新打开流并将数据附加到现有数据中。

flush() 只是确保将任何缓冲的数据写入磁盘(在这种情况下 – 更一般地说,通过您正在使用的任何IO通道刷新)。 之后您仍然可以写入流(或编写者)。

close()刷新数据并指示没有更多数据 。 它关闭任何文件句柄,套接字或其他任何东西。 然后,您无法再写入流(或编写器)。

请注意,如果不调用flush()数据仍然可以写入有问题的IO通道 – 只是可能会缓冲某些数据。

close()通常也会调用flush() ,但是最近有人向我指出,在某些JDK实现中,作为关闭的一部分被刷新引发的任何exception都被吞噬了:(

flush()将缓冲区的内容刷新到目标。您可以再次将某些内容写入流中。 close()将内容刷新到目标并关闭流。 close()你不能再写任何东西了。

flush() :要刷新输出流,请使用DataOutputStream类的void flush()方法。 此方法在内部调用底层OutputStream类的flush()方法,该方法强制将任何缓冲的输出字节写入流中。

close() :它通常关闭Stream,connection,socket。

请参阅flushclose示例