import java.io.*;
import java.util.zip.*;
public class UnzipFile {
public static void unzip(String zipFilePath, String destDirectory) {
File dir = new File(destDirectory);
// create output directory if it doesn't exist
if (!dir.exists()) dir.mkdirs();
try (ZipInputStream zis = new ZipInputStream(new FileInputStream(zipFilePath))) {
ZipEntry zipEntry = zis.getNextEntry();
while (zipEntry != null) {
File newFile = newFile(dir, zipEntry);
if (zipEntry.isDirectory()) {
newFile.mkdirs();
} else {
// fix for Windows-created archives
new File(newFile.getParent()).mkdirs();
FileOutputStream fos = new FileOutputStream(newFile);
byte[] buffer = new byte[1024];
int len;
while ((len = zis.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
fos.close();
}
zipEntry = zis.getNextEntry();
}
zis.closeEntry();
} catch (IOException e) {
e.printStackTrace();
}
}
private static File newFile(File destinationDir, ZipEntry zipEntry) throws IOException {
File destFile = new File(destinationDir, zipEntry.getName());
String destDirPath = destinationDir.getCanonicalPath();
String destFilePath = destFile.getCanonicalPath();
if (!destFilePath.startsWith(destDirPath + File.separator)) {
throw new IOException("Entry is outside of the target dir: " + zipEntry.getName());
}
return destFile;
}
public static void main(String[] args) {
String zipFilePath = "path/to/your/zipfile.zip";
String destDirectory = "path/to/destination/directory";
unzip(zipFilePath, destDirectory);
}
}
java.io.*和java.util.zip.*来处理文件输入输出和解压操作。unzip:这个方法接收两个参数,一个是ZIP文件的路径,另一个是目标目录的路径。它会读取ZIP文件中的每个条目,并根据条目类型(文件或目录)进行相应的处理。unzip方法。你可以根据实际需求修改zipFilePath和destDirectory的值来解压不同的ZIP文件。
上一篇:java服务
下一篇:java 对象
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站