栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA 压缩工具 zip4j简单封装

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVA 压缩工具 zip4j简单封装

JAVA 压缩工具 zip4j简单封装

pom依赖


 	net.lingala.zip4j
    zip4j
    2.9.1

ZipUtil.java

import net.lingala.zip4j.ZipFile;
import net.lingala.zip4j.model.ZipParameters;
import net.lingala.zip4j.model.enums.EncryptionMethod;

import java.io.File;

public class ZipUtil {

    
    public static void zip(String rootFolder, String zipFileTargetPath) throws Exception {
        zip(new File(rootFolder), new File(zipFileTargetPath));
    }

    
    public static void zip(String rootFolder, String zipFileTargetPath, String password) throws Exception {
        zip(new File(rootFolder), new File(zipFileTargetPath), password);
    }

    public static void zip(File rootFolder, File zipFileTargetPath) throws Exception {
        verifyZipRootFolder(rootFolder);
        try (ZipFile zipFile = new ZipFile(zipFileTargetPath);) {
            for (File f : rootFolder.listFiles()) {
                if (f.isFile()) {
                    zipFile.addFile(f);
                } else if (f.isDirectory()) {
                    zipFile.addFolder(f);
                }
            }
        }
    }

    public static void zip(File rootFolder, File zipFileTargetPath, String password) throws Exception {
        if (password == null || password.isEmpty()) {
            zip(rootFolder, zipFileTargetPath);
            return;
        }
        verifyZipRootFolder(rootFolder);

        // 压缩文件启用密码,加密算法采用AES
        ZipParameters zipParameters = new ZipParameters();
        zipParameters.setEncryptFiles(true);
        zipParameters.setEncryptionMethod(EncryptionMethod.AES);

        try (ZipFile zipFile = new ZipFile(zipFileTargetPath, password.toCharArray());) {
            for (File f : rootFolder.listFiles()) {
                if (f.isFile()) {
                    zipFile.addFile(f, zipParameters);
                } else if (f.isDirectory()) {
                    zipFile.addFolder(f, zipParameters);
                }
            }
        }
    }

    
    public static void unZip(String zipFilePath, String targetFolder) throws Exception {
        unZip(new File(zipFilePath), targetFolder);
    }

    public static void unZip(String zipFilePath, String targetFolder, String password) throws Exception {
        unZip(new File(zipFilePath), targetFolder, password);
    }

    public static void unZip(File zipFilePath, String targetFolder) throws Exception {
        try (ZipFile zipFile = new ZipFile(zipFilePath);) {
            zipFile.extractAll(targetFolder);
        }
    }

    public static void unZip(File zipFilePath, String targetFolder, String password) throws Exception {
        try (ZipFile zipFile = new ZipFile(zipFilePath);) {
            if (zipFile.isEncrypted()) {
                zipFile.setPassword(password.toCharArray());
            }
            zipFile.extractAll(targetFolder);
        }
    }

    private static void verifyZipRootFolder(File rootFolder) {
        if (!rootFolder.isDirectory()) {
            throw new RuntimeException("压缩路径根目录必须是文件夹");
        }
        if (rootFolder.listFiles() == null) {
            throw new NullPointerException("压缩路径根目录下没有文件");
        }
    }

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/658665.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号