zip4j 2.x使用,Java实现文件压缩与解压,加密压缩,ZipParameters ZipFile使用

Posted 抓手

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zip4j 2.x使用,Java实现文件压缩与解压,加密压缩,ZipParameters ZipFile使用相关的知识,希望对你有一定的参考价值。

引入maven坐标

        <dependency>
            <groupId>net.lingala.zip4j</groupId>
            <artifactId>zip4j</artifactId>
            <version>2.9.1</version>
        </dependency>

工具类

import lombok.extern.slf4j.Slf4j;
import net.lingala.zip4j.ZipFile;
import net.lingala.zip4j.exception.ZipException;
import net.lingala.zip4j.model.ZipParameters;
import net.lingala.zip4j.model.enums.AesKeyStrength;
import net.lingala.zip4j.model.enums.EncryptionMethod;
import org.apache.commons.lang3.StringUtils;

import java.io.File;

/**
 * @author 向振华
 * @date 2021/07/09 10:47
 */
@Slf4j
public class FileZipUtils 

    /**
     * 压缩
     *
     * @param sourceFile 压缩源文件,会在源文件所在目录下新建一个zip文件夹存放压缩后的文件
     * @param password   密码
     */
    public static void compress(File sourceFile, String password) 
        File dir = new File(sourceFile.getParent() + File.separator + "zip");
        dir.mkdir();

        // 文件名
        String fileName = sourceFile.getName();
        // 文件真实名(不含扩展名)
        String realName = fileName.substring(0, fileName.lastIndexOf("."));
        String targetPathname = dir.getAbsolutePath() + File.separator + realName + ".zip";
        File targetFile = new File(targetPathname);

        ZipParameters zipParameters = new ZipParameters();
        ZipFile zipFile = new ZipFile(targetFile);
        // 是否加密
        if (StringUtils.isNotBlank(password)) 
            zipParameters.setEncryptFiles(true);
            zipParameters.setEncryptionMethod(EncryptionMethod.AES);
            zipParameters.setAesKeyStrength(AesKeyStrength.KEY_STRENGTH_256);
            zipFile.setPassword(password.toCharArray());
        
        try 
            zipFile.addFile(sourceFile, zipParameters);
         catch (Exception e) 
            log.error("压缩文件异常:", e);
        
    

    /**
     * 解压
     *
     * @param sourceFile 解压源文件,会在源文件所在目录下新建一个unzip文件夹存放解压后的文件
     * @param password   密码
     */
    public static void uncompress(File sourceFile, String password) 
        // 文件夹路径
        String parent = sourceFile.getParent();
        String targetPath = parent + File.separator + "unzip";
        File dir = new File(targetPath);
        dir.mkdir();

        ZipFile zipFile = new ZipFile(sourceFile);
        try 
            if (zipFile.isEncrypted()) 
                zipFile.setPassword(password.toCharArray());
            
            zipFile.extractAll(targetPath);
         catch (ZipException e) 
            log.error("解压缩文件异常:", e);
        
    

测试

    public static void main(String[] args) 
        // 压缩
        compress(new File("D:\\\\Z\\\\a.png"), "123");

        // 解压
        uncompress(new File("D:\\\\Z\\\\zip\\\\a.zip"), "123");
    

以上是关于zip4j 2.x使用,Java实现文件压缩与解压,加密压缩,ZipParameters ZipFile使用的主要内容,如果未能解决你的问题,请参考以下文章

Java基础-压缩解压

使用JAVA解压加密的中文ZIP压缩包

zip4j -- Java处理zip压缩文件的完整解决方案

Java实现文件压缩与解压

zip4j之加压解压

zip4j加密压缩解压缩文件文件夹