code: public static File uncompress(File sourceFile, boolean deleteSourceFileAfterUncompressed) throws FileAlreadyExistsException, IOException {
          return uncompress(sourceFile, sourceFile.getParentFile(), deleteSourceFileAfterUncompressed);
      }
docs: Uncompresses the source file using a variety of supported compression
  algorithms.  This method will create a file in the same directory as
  the source file by stripping the compression algorithm's file extension from
  the source filename.  For example, using "gzip" will mean a source file of
  "app.log.gz" would be uncompressed to "app.log".
  @param sourceFile The compressed file
  @param deleteSourceFileAfterUncompressed Delete the original source file
  only if the uncompression was successful.
  @return The uncompressed file
  @throws FileAlreadyExistsException Thrown if the target file already
  exists and an overwrite is not permitted.  This exception is a
  subclass of IOException, so its safe to only catch an IOException
  if no specific action is required for this case.
  @throws IOException Thrown if an error occurs while attempting to
  uncompress the source file.