@Override public void close() throws IOException {
  if (!closed) {
    finish();
    inf.end();
    out.close();
    closed=true;
  }
}

@ Override public void close ( ) throws IOException { if ( ! closed ) { finish ( ) ; inf . end ( ) ; out . close ( ) ; closed = true ; } }
writes remaining data into the output stream and closes the underlying output stream .
