Using flush() before close()

Sivasubramaniam Arunachalam picture Sivasubramaniam Arunachalam · Mar 25, 2012 · Viewed 33.5k times · Source

As per the java docs, invoking close() on any java.io Streams automatically invokes flush(). But I have seen in lot of examples, even in production codes, developers have explicitly used flush() just before close(). In what conditions we need to use flush() just before close()?

Answer

Peter Lawrey picture Peter Lawrey · Mar 25, 2012

Developer get into a habit of calling flush() after writing something which must be sent.

IMHO Using flush() then close() is common when there has just been a write e.g.

// write a message
out.write(buffer, 0, size);
out.flush();

// finished
out.close();

As you can see the flush() is redundant, but means you are following a pattern.