- package tools;
-
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileNotFoundException;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.util.zip.GZIPInputStream;
- import org.apache.commons.compress.archivers.tar.TarArchiveInputStream;
- import org.apache.commons.compress.utils.IOUtils;
- import org.apache.commons.compress.archivers.tar.TarArchiveEntry;
-
- public class Compless {
-
- /**
- * `.tar.gz`形式のファイルを指定のディレクトリにuncompless
- *
- * @param outDir
- * @param gzipFile
- * @throws FileNotFoundException
- * @throws IOException
- */
- public static void uncomplessTarGz(File outDir, File gzipFile) throws FileNotFoundException, IOException {
- try (FileInputStream fis = new FileInputStream(gzipFile)) {
- try (GZIPInputStream gis = new GZIPInputStream(fis)) {
- try (TarArchiveInputStream tis = new TarArchiveInputStream(gis)) {
- for (TarArchiveEntry entry = tis.getNextTarEntry(); entry != null; entry = tis.getNextTarEntry()) {
- if (entry.isDirectory()) {
- File newDir = new File(outDir, entry.getName());
- try {
- newDir.mkdirs();
- }
- catch(Exception e) {
- throw new IOException("directory '" + newDir.getAbsolutePath() + "' cannot create.");
- }
- }
- else {
- File newfile = new File(outDir, entry.getName());
- File parentDir = newfile.getParentFile();
- try {
- parentDir.mkdirs();
- }
- catch(Exception e) {
- throw new IOException("directory '" + parentDir.getAbsolutePath() + "' cannot create.");
- }
- try (FileOutputStream fos = new FileOutputStream(newfile)) {
- IOUtils.copy(tis, fos); // Apache common-io
- }
- }
- }
- }
- }
- }
- }
-
-
- }