在Java中解压.tar.gz文件
时间: 2024-08-14 18:07:56 浏览: 77
在Java中解压`.tar.gz`文件通常需要使用一些外部库,比如Apache Commons Compress或者Java内置的`java.util.zip`包结合`gzip`库。以下是一个简单的示例,使用`commons-compress`库:
```java
import org.apache.commons.compress.archivers.tar.TarArchiveInputStream;
import org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream;
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class TarGzExtractor {
public static void main(String[] args) throws IOException {
String archiveFilePath = "path_to_your_tar.gz";
Path targetDir = Paths.get("target_directory");
try (InputStream is = new FileInputStream(archiveFilePath);
GzipCompressorInputStream gis = new GzipCompressorInputStream(is);
TarArchiveInputStream tarIs = new TarArchiveInputStream(gis)) {
// 创建目标目录如果不存在
Files.createDirectories(targetDir);
TarArchiveEntry entry;
while ((entry = tarIs.getNextEntry()) != null) {
Path outputPath = targetDir.resolve(entry.getName());
if (entry.isDirectory()) {
Files.createDirectories(outputPath);
} else {
try (OutputStream os = new FileOutputStream(outputPath.toFile())) {
byte[] buffer = new byte[1024];
int length;
while ((length = tarIs.read(buffer)) > 0) {
os.write(buffer, 0, length);
}
}
}
}
} finally {
tarIs.close();
gis.close();
is.close();
}
System.out.println("解压完成");
}
}
```
在这个例子中,首先创建一个`TarArchiveInputStream`来处理`.tar.gz`内容,然后逐个读取并解压每个条目到指定的目标目录。
阅读全文