How to Compress/Decompress tar.gz files in java
My favorite is plexus-archiver - see sources on GitHub.
Another option is Apache commons-compress - (see mvnrepository).
With plexus-utils, the code for unarchiving looks like this:
final TarGZipUnArchiver ua = new TarGZipUnArchiver();
// Logging - as @Akom noted, logging is mandatory in newer versions, so you can use a code like this to configure it:
ConsoleLoggerManager manager = new ConsoleLoggerManager();
manager.initialize();
ua.enableLogging(manager.getLoggerForComponent("bla"));
// -- end of logging part
ua.setSourceFile(sourceFile);
destDir.mkdirs();
ua.setDestDirectory(destDir);
ua.extract();
Similar *Archiver classes are there for archiving.
With Maven, you can use this dependency:
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-archiver</artifactId>
<version>2.2</version>
</dependency>
I've written a wrapper for commons-compress called jarchivelib that makes it easy to extract or compress from and into File
objects.
Example code would look like this:
File archive = new File("/home/thrau/archive.tar.gz");
File destination = new File("/home/thrau/archive/");
Archiver archiver = ArchiverFactory.createArchiver("tar", "gz");
archiver.extract(archive, destination);