java zip 递归解压
时间: 2023-07-07 13:36:38 浏览: 39
你可以使用 `java.util.zip` 包中的 `ZipEntry` 和 `ZipInputStream` 类来递归解压 ZIP 文件。以下是一个示例代码:
```java
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.io.InputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.File;
public class UnzipRecursive {
public static void main(String[] args) {
String zipFilePath = "/path/to/your/file.zip";
String destDirectory = "/path/to/your/destination/directory";
unzipRecursive(zipFilePath, destDirectory);
}
public static void unzipRecursive(String zipFilePath, String destDirectory) {
byte[] buffer = new byte[1024];
try {
File destDir = new File(destDirectory);
if (!destDir.exists()) {
destDir.mkdir();
}
ZipInputStream zis = new ZipInputStream(new FileInputStream(zipFilePath));
ZipEntry entry = zis.getNextEntry();
while (entry != null) {
String fileName = entry.getName();
File newFile = new File(destDirectory + File.separator + fileName);
if (entry.isDirectory()) {
newFile.mkdirs();
unzipRecursive(zipFilePath, newFile.getAbsolutePath());
} else {
FileOutputStream fos = new FileOutputStream(newFile);
int len;
while ((len = zis.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
fos.close();
}
entry = zis.getNextEntry();
}
zis.closeEntry();
zis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
在上面的代码中,`unzipRecursive` 方法接受 ZIP 文件路径和目标目录路径作为参数,并使用 `FileInputStream` 和 `ZipInputStream` 从 ZIP 文件中读取并解压文件。如果 ZIP 文件中有一个目录,它会递归地调用 `unzipRecursive` 方法来创建目录并解压包含在目录中的文件。如果 ZIP 文件中有一个文件,它将创建一个新文件并将其解压到目标目录中。