java 压缩文件 zip 可加密

<dependency>
    <groupId>net.lingala.zip4j</groupId>
    <artifactId>zip4j</artifactId>
    <version>2.6.4</version>
</dependency>
复制代码
public static void zip(File currentDir, String toFilePath, String password) throws Exception {
    // 生成的压缩文件
    ZipFile zipFile = new ZipFile(toPath);
    ZipParameters parameters = new ZipParameters();
    // 压缩方式
    parameters.setCompressionMethod(CompressionMethod.DEFLATE);
    // 压缩级别
    parameters.setCompressionLevel(CompressionLevel.NORMAL);
    // 是否设置加密文件
    parameters.setEncryptFiles(true);
    // 设置加密算法
    parameters.setEncryptionMethod(EncryptionMethod.AES);
    // 设置AES加密密钥的密钥强度
    parameters.setAesKeyStrength(AesKeyStrength.KEY_STRENGTH_256);
    // 设置密码
    if(!Strings.isNullOrEmpty(password)) {
        zipFile.setPassword(password.toCharArray());
    }

    // 要打包的文件夹
    File[] fs = currentDir.listFiles();

    // 遍历test文件夹下所有的文件、文件夹
    for (File f : fList) {
        if (f.isDirectory()) {
            zipFile.addFolder(f, parameters);
        } else {
            zipFile.addFile(f, parameters);
        }
    }
}
复制代码

 

复制代码
public static void unzip(String zipFilePath, String toPath, String password) throws Exception {
    // 生成的压缩文件
    ZipFile zipFile = new ZipFile(zipFilePath);
    // 设置密码
    if(!Strings.isNullOrEmpty(password)) {
        zipFile.setPassword(password.toCharArray());
    }
    // 解压缩所有文件以及文件夹
    zipFile.extractAll(toPath);
}
复制代码

 

posted @   Bevis  阅读(3314)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
历史上的今天:
2020-01-07 ZipUtils-工具类
点击右上角即可分享
微信分享提示