TarArchiveInputStream fin = new TarArchiveInputStream(new GzipCompressorInputStream(new FileInputStream(sourceFile)));

1、maven 中引入 apache 解压 / 压缩 工具类

<dependency> 
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId> 
<version>1.9</version> 
</dependency>

 

2、代码中使用

import org.apache.commons.compress.archivers.tar.TarArchiveEntry;
import org.apache.commons.compress.archivers.tar.TarArchiveInputStream; 
import org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream; 
import org.apache.commons.compress.utils.IOUtils;
 
/**
*// tar.gz 文件路径 String sourcePath = "D:\\daleyzou.tar.gz";
*// 要解压到的目录 String extractPath = "D:\\test\\daleyzou";
*/
public static void extar(String sourcePath ,String extractPath ){
File(sourcePath); 
  // decompressing *.tar.gz files to tar 
TarArchiveInputStream(new GzipCompressorInputStream(new FileInputStream(sourceFile))); 
File(extractPath); 
  TarArchiveEntry entry; 
  // 将 tar 文件解压到 extractPath 目录下 
  while ((entry = fin.getNextTarEntry()) != null) { 
if (entry.isDirectory()) { 
continue; 
    } 
File curfile = new File(extraceFolder, entry.getName());
File parent = curfile.getParentFile();
if (!parent.exists()) { 
      parent.mkdirs(); 
    } 
// 将文件写出到解压的目录 
IOUtils.copy(fin, new FileOutputStream(curfile)); 
  }
}