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

2023-05-16

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();
        }


    }
}

 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java zip文件解压(含有密码解压) 的相关文章

随机推荐

  • “No X11 DISPLAY variable was set”问题的解决过程

    No X11 DISPLAY variable was set 问题的解决过程 参考文章 xff1a xff08 1 xff09 No X11 DISPLAY variable was set 问题的解决过程 xff08 2 xff09 h
  • postgreSql查询复杂json数组字段

    因为在生产环境中使用到两次 故而记录一下对复杂json字段提取字段值的SQL 先看数据格式 xff1a 假设表名为 ry xff1b 下面的数据格式是我们的字段ryxx 34 bh 34 34 123 34 34 jbxx 34 34 xm
  • VS调用大恒相机sdk实时显示图像并进行图像处理+OPENCV

    前言 xff1a 近期企业需要用大恒相机的sdk开发项目 xff0c 我采用VS2017 43 QT5 10 1 43 MSVC 一 环境配置 VS2017和qt的安装不多介绍 xff0c 主要介绍大恒sdk的配置 1 https www
  • 元学习 每日学习之路

    参考视频 2 21 元学习 xff1a 学会如何去学习 xff0c 就是带着这种对人类这种 学习能力 的期望诞生的 Meta Learning希望使得模型获取一种 学会学习 的能力 xff0c 使其可以在获取已有 知识 的基础上快速学习新的
  • 笔记本电脑连接WIFI速度很慢-解决办法 亲测有效【5MB/S直达10MB/S】

    电脑连接WIFI 经常发生连续断网 xff0c 或者家里的网明明是100M 但是连接电脑WIFI 却连50M都不到 于是在网上查了很多资料 xff0c 网上大多的方法 我讲两个 xff1a 一 用电脑管家 xff0c 360 xff0c 鲁
  • react-native 调用Settings.Secure.getstring获取了android_id / app上架违规获取android_id被拒

    华为上架时 被违规获取android id原因拒绝上架 使用HookLoginDemo检测结果如下 span class token number 2022 span span class token operator span span
  • Linux——网络桥接

    什么是网络桥接 xff1f 在网络的使用中 xff0c 有时需要搭建网络桥来实现网络桥接 例如在一台主机上制作一台虚拟机 xff0c 虚拟机是没有物理网卡的 xff0c 这时虚拟机数据的发送和接收就需要通过主机上的物理网卡 xff0c 需要
  • STM32实战之LED循环点亮

    接着上一章讲 本章我们来讲一讲LED流水灯 xff0c 循环点亮LED 在LED章节有的可能没有讲到 xff0c 本章会对其进行说明 xff0c 尽量每个函数说一下作用 也会在最后说一下STM32的寄存器 xff0c 在编程中寄存器是避免不
  • 远程连接桌面到ubuntu登录闪退

    问题 xff1a 远程连接到Ubuntu的时候登录闪退 xff0c 密码正确 xff0c 且之前在本地登录过没有问题 xff0c ssh登录没有问题 原因 xff1a 就是因为之前在本地登录了没有登出 xff0c 只是锁屏了 xff0c 导
  • CSRF跨站请求伪造漏洞修复

    文章目录 一 漏洞描述二 解决建议二 解决方法Springboot 配置文件增加配置编写配置类编写过滤器 提示 xff1a 以下是本篇文章正文内容 xff0c 下面案例可供参考 一 漏洞描述 跨站请求伪造 xff08 Cross site
  • Linux挂载磁盘(扩容)

    磁盘相关介绍 xff1a fdisk l 查看磁盘占用情况 sda xff1a 代表一个磁盘 s SCSI d 磁盘 a 代表挂在在SCSI类型的硬盘的第一块 Linux文件系统 xff1a 都是用文件 形式描述的 SCSI xff1a 用
  • 动规例题C++代码

    动规题目 xff1a 字符串S由小写字母构成 xff0c 长度为n 定义一种操作 xff0c 每次都可以挑选字符串中任意的两个相邻字母进行交换 询问在至多交换m次之后 xff0c 字符串中最多有多少个连续的位置上的字母相同 xff1f 参考
  • Centos7下Samba服务器配置

    环境 vm下centos7 6 xff0c IP地址 xff1a 192 168 139 200 Samba概述 Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件 xff0c 由服务器及客户端程序构成 SMB xff08
  • iOS 自定义tableView Cell、高度自适应

    1 xib方式创建 每个cell的显示的内容都是固定的 xff0c 也就是cell的高度都是相同的 加载数据 有plist文件数据结构如下 创建数据模型 Product span class token punctuation span h
  • Windows7修改socket默认缓冲区大小

    在工作中 xff0c 遇到游戏服通过UDP协议向日志服发送日志时 xff0c 日志服有时无法识别游戏服发送过来的日志消息 通过抓包发现 xff0c Windows收到的数据包大小 xff0c 比实例的数据包小 猜测是Windows sock
  • Windows10 上安装 Anaconda 后命令提示符(cmd)下无法执行python命令解决方案

    安装Anaconda后一段时间内能够在命令提示符 xff08 cmd xff09 界面运行python会进入python的交互界面 xff01 可是一段时间后突然间后突然运行不通过报错如图一所示 然后我们找到路径 C Program Fil
  • python实现视频转文字

    最近在做视频转文本的工作 xff0c 遇到了不少问题 xff0c 记录一下 本博客包括以下内容 xff1a 1 如何将视频转换成音频 2 如何调用科大讯飞API实现音频转文字 首先 xff0c 视频转文本 xff0c 如果调用科大讯飞API
  • centos7安装gitlab-ce

    安装gitlab ce 首先安装依赖 xff1a yum install curl openssh server openssh clients postfix policycoreutils python启动所需服务 systemctl
  • vue使用element-plus创建项目

    vue cli创建项目 报错 找到windows powershell 管理员 xff0c 必须以管理员身份执行 xff0c 输入 set ExecutionPolicy RemoteSigned 选择创建方式 Default Uue 3
  • java zip文件解压(含有密码解压)

    maven需要加入以下依赖 xff1a lt dependency gt lt groupId gt net lingala zip4j lt groupId gt lt artifactId gt zip4j lt artifactId