Search code examples
javaiostream

Using flush() before close()


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()?


Solution

  • 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.