把某个文件夹下面文件夹一起压缩成zip格式

1.需求
把某个文件夹下面文件夹一起压缩成zip格式

2.要将某个文件夹下的所有文件夹和文件一起压缩成 zip 格式,可以使用 Java 的 ZipOutputStream 类。以下是一个示例代码:

import java.io.*;
import java.util.zip.*;

public class ZipFolder {
    public static void main(String[] args) {
        String sourceFolder = "path/to/source/folder";
        String zipFile = "path/to/destination/zipfile.zip";

        try {
            FileOutputStream fos = new FileOutputStream(zipFile);
            ZipOutputStream zipOut = new ZipOutputStream(fos);
            File folderToZip = new File(sourceFolder);

            zipFile(folderToZip, folderToZip.getName(), zipOut);
            zipOut.close();
            fos.close();
            System.out.println("Folder successfully compressed to zip file.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private static void zipFile(File fileToZip, String fileName, ZipOutputStream zipOut) throws IOException {
        if (fileToZip.isHidden()) {
            return;
        }
        if (fileToZip.isDirectory()) {
            if (fileName.endsWith("/")) {
                zipOut.putNextEntry(new ZipEntry(fileName));
                zipOut.closeEntry();
            } else {
                zipOut.putNextEntry(new ZipEntry(fileName + "/"));
                zipOut.closeEntry();
            }
            File[] children = fileToZip.listFiles();
            for (File childFile : children) {
                zipFile(childFile, fileName + "/" + childFile.getName(), zipOut);
            }
            return;
        }
        FileInputStream fis = new FileInputStream(fileToZip);
        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();
    }
}

在上面的代码中,你需要将 sourceFolder 替换为要压缩的文件夹的路径,将 zipFile 替换为生成的 zip 文件的路径。运行该代码后,会在指定的路径下生成一个名为 zipfile.zip 的压缩文件,其中包含了该文件夹下的所有文件夹和文件。

posted @ 2024-01-15 13:16  我的心儿  阅读(158)  评论(0)    收藏  举报