java解压zip文件

article/2025/10/21 12:17:20

zip文件目录结构如下:

其中,word下面还有多个子目录,可以递归进行解压目录,核心代码如下:

package com.atguigu.common.utils;import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;/*** @ClassName Test* @Description java实现解压zip文件* @Author mischen* @Date 2023/2/25 7:57* @Version 1.0**/
public class Test {public static void main(String[] args) {File sourefile = new File("F:\\test1\\demo.zip");String dest = "F:\\test1\\demo";unZip(sourefile,dest);System.out.println("解压成功!");}/*** zip解压* @param srcFile        zip源文件* @param destDirPath     解压后的目标文件夹* @throws RuntimeException 解压失败会抛出运行时异常* @author mischen* @date 2023-02-25*/public static void unZip(File srcFile, String destDirPath) throws RuntimeException {long start = System.currentTimeMillis();// 判断源文件是否存在if (!srcFile.exists()) {throw new RuntimeException(srcFile.getPath() + "所指文件不存在");}// 开始解压ZipFile zipFile = null;try {zipFile = new ZipFile(srcFile);Enumeration<?> entries = zipFile.entries();while (entries.hasMoreElements()) {ZipEntry entry = (ZipEntry) entries.nextElement();System.out.println("解压" + entry.getName());// 如果是文件夹,就创建个文件夹if (entry.isDirectory()) {String dirPath = destDirPath + "/" + entry.getName();File dir = new File(dirPath);dir.mkdirs();} else {// 如果是文件,就先创建一个文件,然后用io流把内容copy过去File targetFile = new File(destDirPath + "/" + entry.getName());// 保证这个文件的父文件夹必须要存在if(!targetFile.getParentFile().exists()){targetFile.getParentFile().mkdirs();}targetFile.createNewFile();// 将压缩文件内容写入到这个文件中InputStream is = zipFile.getInputStream(entry);FileOutputStream fos = new FileOutputStream(targetFile);int len;byte[] buf = new byte[1024];while ((len = is.read(buf)) != -1) {fos.write(buf, 0, len);}// 关流顺序,先打开的后关闭fos.close();is.close();}}long end = System.currentTimeMillis();System.out.println("解压完成,耗时:" + (end - start) +" ms");} catch (Exception e) {throw new RuntimeException("unzip error from ZipUtils", e);} finally {if(zipFile != null){try {zipFile.close();} catch (IOException e) {e.printStackTrace();}}}}
}


http://chatgpt.dhexx.cn/article/e2KaLPlJ.shtml

相关文章

Linux 解压 zip 分卷

对于一个大的文件&#xff0c;使用分卷压缩得到如下文件&#xff1a; 传到Linux目录下&#xff0c;希望解压出来&#xff0c;需要使用zip -F命令修复分卷&#xff0c;从而合成正确的一个压缩文件 zip -F UCF-101.zip --out ucf101.zip得到 ucf101.zip&#xff0c;然后解压 uc…

java解压zip压缩包

坐在旁边的小伙伴问我怎么用 java 将服务器上的压缩文件解压出来&#xff0c;我索性给他写了个 demo &#xff0c;也顺手记录一下。亲测可用&#xff0c;如果觉得有帮助&#xff0c;欢迎点赞&#xff0c;评论&#xff0c;收藏&#xff0c;转发 java 实现解压 zip 压缩包 packag…

【方法】ZIP分卷压缩文件如何解压?

有时候文件太大&#xff0c;我们在压缩ZIP文件时会使用分卷压缩。 那后期想要解压ZIP分卷文件&#xff0c;要如何解压呢&#xff1f;不清楚的小伙伴&#xff0c;可以跟着小编来看看哦。 在解压ZIP分卷压缩文件之前&#xff0c;要先确保所有的分卷压缩包都存放在一个文件夹里&…

Btrace安装步骤[详细]

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 Btrace安装步骤 一、下载地址二、配置环境变量1.添加home2.加到Path里3.尝试启动4.Windows查看pid进程号 一、下载地址 我用的是最新版本 V2.2.1 下载地址: https://github.…

【性能跟踪】btrace学习一--安装btrace

最近公司里为了监控线上的类&#xff0c;方法的执行时间&#xff0c;结果等用到了这个开源的小工具&#xff0c;自己也学习了下&#xff0c;感觉比较简单&#xff0c;但是还是挺实用的。 这里做个学习笔记。 1.首先到网上下个Btrace包吧&#xff0c;官方网址是&#xff1a;htt…

重要升级!btrace 2.0 技术原理大揭秘

‍ 动手点关注 干货不迷路 项目 GitHub 地址&#xff1a;https://github.com/bytedance/btrace 背景介绍 在一年多前&#xff0c;我们对外正式开源了 btrace&#xff08;AKA RheaTrace&#xff09;&#xff0c;它是基于 Systrace 的高性能 Trace 工具&#xff0c;目前字节跳动已…

BTrace安装和使用

一、 安装JDK&#xff08;需要安装jdk7及以上版本&#xff09; jdk-7u80-linux-x64.tar.gz 二、 安装BTrace 1&#xff09;下载地址&#xff1a;https://github.com/btraceio/btrace/releases/tag/v1.3.8.3-1 2&#xff09;解压缩 在当前用户目录下新建btrace目录&#…

BTrace分析和使用

BTrace分析和使用 一、 BTrace简介 BTrace是一个为Java平台开发的安全、动态的追踪工具。BTrace动态地向目标应用程序的字节码注入Java追踪代码&#xff08;字节码追踪&#xff09;。 GitHUB地址https://github.com/btraceio/btrace。 原理为将字节码发送到应用&#xff…

BTrace入门

BTrace入门 概念性的东西自行网上查阅吧。 安装 现在btrace项目已经迁移到了github上了。这点可以从官网&#xff08; https://kenai.com/projects/btrace/downloads/directory/releases/latest &#xff09;上看出。 点开这个链接就会跳转到btrace项目的github地址&#x…

(转)btrace使用

Btrace 是一个安全&#xff0c;可以动态跟踪 java 程序的一种工具。他的操作不会对原有 java 进程产生影响&#xff0c;不用关闭正在运行的 java 进程&#xff0c;也不会修改 java 进程中的逻辑和数据。因此&#xff0c;也就成为我们线上跟踪生产代码的有力工具! 之前 Btrace 只…

【性能跟踪】btrace学习二--btrace一个简单例子

btrace安装好了&#xff0c;就看一些语法吧。可以到btrace的官方帮助文档中去看&#xff0c;基本上就可以http://kenai.com/projects/btrace/pages/UserGuide 【注&#xff1a;你本地的jdk要是1.6及以上才行&#xff0c;1.5可是不支持的】 下面以一个例子来说明&#xff1a; 新…

btrace 开源!基于 Systrace 高性能 Trace 工具

介绍 btrace&#xff08;又名 RheaTrace&#xff09; 是抖音基础技术团队自研的一款高性能 Android Trace 工具&#xff0c;它基于 Systrace 实现&#xff0c;并针对 Systrace 不足之处加以改进&#xff0c;核心改进点如下。 效率提升&#xff1a;编译期间为 App 方法自动注入自…

BTrace简介与使用说明

目录 前言 简介 安装 下载BTrace 配置BTRACE_HOME BTrace使用 注意事项 BTrace注解 ProbeClassName ProbeMethodName Self Return Duration TargetInstance TargetMethodOrField OnMethod OnTimer OnError OnEvent 在jvisualvm中使用BTrace BTraceUtils方法介绍 前言 大家在…

Btrace使用入门

目录 1.什么是BTrace 2.BTrace使用场景 BTrace可以做什么&#xff1f; 3.使用限制 4.使用方法及样例 4.1使用方法 4.2使用样例 2.查看哪些方法调用了 System.gc() &#xff0c;调用栈是怎样的 3.打印某个类中某一方法的入参和返回值 5.拦截方法定义 定位方法 拦截时…

黄油刀ButterKnife的使用

1、ButterKnife是一个专注于Android系统的View注入框架,以前总是要写很多findViewById来找到View对象&#xff0c;有了ButterKnife可以很轻松的省去这些步骤。是大神JakeWharton的力作&#xff0c;目前使用很广。最重要的一点&#xff0c;使用ButterKnife对性能基本没有损失&am…

Butterknife——黄油刀的基本使用

平常我们在做项目的时候&#xff0c;不可避免地一定会用到findviewbyid()方法&#xff0c;写多了还是比较繁琐的。但是有个大神Jake Wharton开源了一个神奇的框架叫做ButterKnife,炒鸡好用 接下来是黄油刀的基本用法 &#xff1a; 首先配置编译环境&#xff1a; 1.在eclipse…

黄油刀的使用

Android studio添加的插件名称&#xff1a; File---setting---plugins 添加三方类库 App包下的gradle添加 implementation com.jakewharton:butterknife:5.1.1 Activity布局 Altinsert选择

黄油刀butterknife在Library上的使用(元素值必须为常量表达式)

相信大家都有使用butterknife来为代码节省时间&#xff0c;但是当把项目合并入其他项目&#xff0c;或者是作为一个Library依赖的时候会发现编译会报错。 控制台显示错误&#xff1a;元素值必须为常量表达式。为什么会这样&#xff1f;仔细查看发现在library中注解生成的R文件里…

黄油刀 butterKnife

黄油刀 butterKnife: 自动findViewByID&#xff08;&#xff09;&#xff0c;自动添加点击事件onClick(); 步骤&#xff1a; 1.引入依赖包 butterknife&#xff1a;8.4.0 jakewharton:butterknife:8.4.0 2.安装插件 Android ButterKnife Zelezny 3.配置build 1、工程的gradle文…

ButterKnife(黄油刀)基本使用与源码解析

前言 ButterKnife又称黄油刀&#xff0c;是一款快速绑定Android视图中字段和方法的注解框架&#xff0c;也是Android开发中比较常用的一款快速注解框架&#xff0c;通过ButterKnife的合理运用&#xff0c;我们可以避免重复地书写findViewById&#xff0c;在各种场合下快速地绑…