import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class FilesZipperUtils {
//打包文件夹
public static void FilesZip(String path,String export){
try {
// 创建输出的 ZIP 文件
String zipFilePath = export;
FileOutputStream fos = new FileOutputStream(zipFilePath);
ZipOutputStream zipOut = new ZipOutputStream(fos);
// 压缩文件夹
File folder = new File(path);
zipFolder(folder, "", zipOut);
// 关闭 ZIP 输出流
zipOut.close();
fos.close();
System.out.println("文件压缩完成:" + zipFilePath);
} catch (IOException e) {
System.out.println("文件压缩失败:" + e.getMessage());
}
}
private static void zipFolder(File folder, String parentFolder, ZipOutputStream zipOut) throws IOException {
if (folder.isDirectory()) {
// 遍历文件夹内的文件和子文件夹
for (File file : folder.listFiles()) {
String filePath = (parentFolder.isEmpty() ? "" : parentFolder + "/") + file.getName();
if (file.isDirectory()) {
zipFolder(file, filePath, zipOut); // 递归压缩子文件夹
} else {
zipFile(file, filePath, zipOut); // 压缩文件
}
}
}
}
private static void zipFile(File file, String fileName, ZipOutputStream zipOut) throws IOException {
FileInputStream fis = new FileInputStream(file);
ZipEntry zipEntry = new ZipEntry(fileName);
zipOut.putNextEntry(zipEntry);
byte[] bytes = new byte[1024];
int length;
while ((length = fis.read(bytes)) >= 0) {
zipOut.write(bytes, 0, length);
}
fis.close();
}
}
即拿即用的文件夹下所有文件打包压缩的工具类
最新推荐文章于 2024-08-01 23:43:18 发布