引入依赖
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
<version>1.21</version> <!-- 使用适当的版本号 -->
</dependency>
import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class ZipFolderExample {
public static void main(String[] args) {
String sourceFolderPath = "C:\\file\\files\\c4103d717ef64f20badafa079711b84d"; // 源文件夹路径
String zipFilePath = "C:\\file\\files\\aa.zip"; // ZIP文件路径
try {
FileOutputStream fos = new FileOutputStream(zipFilePath);
ZipArchiveOutputStream zipOut = new ZipArchiveOutputStream(fos);
// 递归遍历文件夹并将文件和文件夹添加到ZIP文件
addFilesToZip(sourceFolderPath, "", zipOut);
zipOut.close();
fos.close();
System.out.println("文件夹成功打包成ZIP文件!");
} catch (IOException e) {
e.printStackTrace();
}
}
private static void addFilesToZip(String folderPath, String parentPath, ZipArchiveOutputStream zipOut) throws IOException {
File folder = new File(folderPath);
File[] files = folder.listFiles();
if (files != null) {
for (File file : files) {
if (file.isDirectory()) {
// 如果是文件夹,递归处理
String subFolderPath = parentPath + file.getName() + "/";
addFilesToZip(file.getAbsolutePath(), subFolderPath, zipOut);
} else {
// 如果是文件,添加到ZIP文件
String entryName = parentPath + file.getName();
ZipArchiveEntry entry = new ZipArchiveEntry(entryName);
zipOut.putArchiveEntry(entry);
FileInputStream fis = new FileInputStream(file);
byte[] buffer = new byte[1024];
int length;
while ((length = fis.read(buffer)) > 0) {
zipOut.write(buffer, 0, length);
}
fis.close();
zipOut.closeArchiveEntry();
}
}
}
}
}