Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

java 压缩文件夹

作者:铁打的心,也会穿孔,   发布日期:2026-04-29   浏览:124

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 FolderCompressor {

    /**
     * 压缩文件夹为ZIP文件
     * @param folderPath 要压缩的文件夹路径
     * @param zipFilePath 输出的ZIP文件路径
     */
    public static void compressFolderToZip(String folderPath, String zipFilePath) {
        try {
            File folder = new File(folderPath);
            File zipFile = new File(zipFilePath);
            FileOutputStream fos = new FileOutputStream(zipFile);
            ZipOutputStream zos = new ZipOutputStream(fos);

            // 递归压缩文件夹中的所有文件
            compressDirectory(folder, zos, "");

            zos.close();
            fos.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 递归压缩文件夹中的所有文件
     * @param file 当前处理的文件或文件夹
     * @param zos Zip输出流
     * @param parentPath 父级路径(用于保持文件夹结构)
     * @throws IOException
     */
    private static void compressDirectory(File file, ZipOutputStream zos, String parentPath) throws IOException {
        if (file.isDirectory()) {
            // 如果是文件夹,递归处理子文件
            for (File child : file.listFiles()) {
                compressDirectory(child, zos, parentPath + file.getName() + "/");
            }
        } else {
            // 如果是文件,添加到ZIP中
            FileInputStream fis = new FileInputStream(file);
            ZipEntry zipEntry = new ZipEntry(parentPath + file.getName());
            zos.putNextEntry(zipEntry);

            byte[] buffer = new byte[1024];
            int length;
            while ((length = fis.read(buffer)) >= 0) {
                zos.write(buffer, 0, length);
            }

            zos.closeEntry();
            fis.close();
        }
    }

    public static void main(String[] args) {
        // 示例用法
        String folderPath = "path/to/your/folder";
        String zipFilePath = "path/to/output.zip";
        compressFolderToZip(folderPath, zipFilePath);
    }
}

解释说明:

  1. compressFolderToZip 方法:这是主方法,用于将指定文件夹压缩为 ZIP 文件。它接收两个参数:folderPath(要压缩的文件夹路径)和 zipFilePath(输出的 ZIP 文件路径)。该方法创建了一个 ZipOutputStream 对象,并调用 compressDirectory 方法来递归处理文件夹中的所有文件。

  2. compressDirectory 方法:这是一个递归方法,用于遍历文件夹中的所有文件和子文件夹。如果遇到文件夹,则继续递归处理其子文件;如果遇到文件,则将其添加到 ZIP 文件中。

  3. ZipEntry 和 ZipOutputStreamZipEntry 表示 ZIP 文件中的一个条目(文件或文件夹),而 ZipOutputStream 用于将数据写入 ZIP 文件。通过 putNextEntry 方法可以将每个文件添加到 ZIP 文件中。

  4. main 方法:提供了一个简单的示例用法,展示了如何调用 compressFolderToZip 方法来压缩文件夹。

希望这段代码能帮助你实现 Java 中的文件夹压缩功能!

上一篇:java解压zip包到指定文件夹下

下一篇:java base64 解码

大家都在看

java url decode

java判断是windows还是linux

java连接数据库的代码

java date类型比较大小

java djl

ubuntu 卸载java

es java api

java list 查找

java 解压rar

jsonobject.tojavaobje

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站