java zip文件解压(含有密码解压)

maven需要加入以下依赖:
<dependency>
       <groupId>net.lingala.zip4j</groupId>
       <artifactId>zip4j</artifactId>
       <version>1.3.2</version>
</dependency>

添加测试代码如下:

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import net.lingala.zip4j.core.ZipFile;
import net.lingala.zip4j.exception.ZipException;
import net.lingala.zip4j.model.FileHeader;


/**
 * @Auther: Jax
 * @Date: 2018/6/28 10:03
 * @Description:zip文件解压缩工具类
 */
public class UnZipUtils {


    public static void main(String[] args) throws IOException {
        UnZipUtils z = new UnZipUtils();
        String source = "C:\\Users\\admin\\Desktop\\java.zip";


        String dest = "D:\\maven\\test";


        String password = "155255";

        z.unZip(source, dest, null);
    }

    /**
     * @param source   原始文件路径
     * @param dest     解压路径
     * @param password 解压文件密码(可以为空)
     */
    public void unZip(String source, String dest, String password) {
        try {
            File zipFile = new File(source);

            // 首先创建ZipFile指向磁盘上的.zip文件
            ZipFile zFile = new ZipFile(zipFile);


            zFile.setFileNameCharset("GBK");

            // 解压目录
            File destDir = new File(dest);
            if (!destDir.exists()) {
                // 目标目录不存在时,创建该文件夹
                destDir.mkdirs();
            }
            if (zFile.isEncrypted()) {

                // 设置密码
                zFile.setPassword(password.toCharArray());


            }

            // 将文件抽出到解压目录(解压)
            zFile.extractAll(dest);


            List<net.lingala.zip4j.model.FileHeader> headerList = zFile.getFileHeaders();


            List<File> extractedFileList = new ArrayList<File>();


            for (FileHeader fileHeader : headerList) {


                if (!fileHeader.isDirectory()) {


                    extractedFileList.add(new File(destDir, fileHeader.getFileName()));


                }


            }


            File[] extractedFiles = new File[extractedFileList.size()];


            extractedFileList.toArray(extractedFiles);


            for (File f : extractedFileList) {


                System.out.println(f.getAbsolutePath() + "文件解压成功!");


            }


        } catch (ZipException e) {
            e.printStackTrace();
        }


    }
}

 
  • 12
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值