java 如何载入 zip
加载 ZIP 文件的方法
在 Java 中可以使用 java.util.zip 包来处理 ZIP 文件。以下是几种常见的操作方式:
读取 ZIP 文件内容
使用 ZipFile 或 ZipInputStream 可以读取 ZIP 文件中的内容。ZipFile 适用于随机访问,而 ZipInputStream 适合流式处理。

import java.util.zip.ZipFile;
import java.util.zip.ZipEntry;
import java.io.IOException;
try (ZipFile zipFile = new ZipFile("example.zip")) {
Enumeration<? extends ZipEntry> entries = zipFile.entries();
while (entries.hasMoreElements()) {
ZipEntry entry = entries.nextElement();
System.out.println("File: " + entry.getName());
}
} catch (IOException e) {
e.printStackTrace();
}
解压 ZIP 文件
以下代码展示了如何将 ZIP 文件解压到指定目录:

import java.util.zip.ZipInputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
Path destDir = Paths.get("output");
try (ZipInputStream zis = new ZipInputStream(new FileInputStream("example.zip"))) {
ZipEntry zipEntry = zis.getNextEntry();
while (zipEntry != null) {
Path filePath = destDir.resolve(zipEntry.getName());
if (!zipEntry.isDirectory()) {
Files.createDirectories(filePath.getParent());
try (FileOutputStream fos = new FileOutputStream(filePath.toFile())) {
byte[] buffer = new byte[1024];
int len;
while ((len = zis.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
}
} else {
Files.createDirectories(filePath);
}
zipEntry = zis.getNextEntry();
}
} catch (IOException e) {
e.printStackTrace();
}
创建 ZIP 文件
以下代码展示了如何将多个文件打包成 ZIP 文件:
import java.util.zip.ZipOutputStream;
import java.io.FileOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
Path sourceDir = Paths.get("files_to_zip");
try (ZipOutputStream zos = new ZipOutputStream(new FileOutputStream("output.zip"))) {
Files.walk(sourceDir)
.filter(path -> !Files.isDirectory(path))
.forEach(path -> {
ZipEntry zipEntry = new ZipEntry(sourceDir.relativize(path).toString());
try {
zos.putNextEntry(zipEntry);
Files.copy(path, zos);
zos.closeEntry();
} catch (IOException e) {
e.printStackTrace();
}
});
} catch (IOException e) {
e.printStackTrace();
}
注意事项
- 处理 ZIP 文件时需要确保文件路径的安全性,防止 ZIP 炸弹攻击。
- 使用
try-with-resources语句确保流正确关闭。 - 对于大文件,建议使用缓冲区提高性能。






