@Override public void close() throws IOException {
  if (!def.finished()) {
    finish();
  }
  def.end();
  out.close();
}

@ Override public void close ( ) throws IOException { if ( ! def . finished ( ) ) { finish ( ) ; } def . end ( ) ; out . close ( ) ; }
writes any unwritten compressed data to the underlying stream , the closes all underlying streams . this stream can no longer be used after close ( ) has been called .
