java解压zip压缩包

article/2025/10/21 14:44:09

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

java 实现解压 zip 压缩包

package com.yuhuofei.utils;import java.io.*;
import java.nio.charset.Charset;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;/*** @Description* @ClassName UnzipUtils* @Author yuhuofei* @Date 2022/8/10 21:03* @Version 1.0*/
public class UnzipUtils {/*** 解压zip压缩文件到指定目录** @param zipPath zip压缩文件绝对路径* @param descDir 指定的解压目录*/public static void unzipFile(String zipPath, String descDir) throws IOException {try {File zipFile = new File(zipPath);if (!zipFile.exists()) {throw new IOException("要解压的压缩文件不存在");}File pathFile = new File(descDir);if (!pathFile.exists()) {pathFile.mkdirs();}InputStream input = new FileInputStream(zipPath);unzipWithStream(input, descDir);} catch (Exception e) {throw new IOException(e);}}/*** 解压** @param inputStream* @param descDir*/public static void unzipWithStream(InputStream inputStream, String descDir) {if (!descDir.endsWith(File.separator)) {descDir = descDir + File.separator;}try (ZipInputStream zipInputStream = new ZipInputStream(inputStream, Charset.forName("GBK"))) {ZipEntry zipEntry;while ((zipEntry = zipInputStream.getNextEntry()) != null) {String zipEntryNameStr = zipEntry.getName();String zipEntryName = zipEntryNameStr;if (zipEntryNameStr.contains("/")) {String str1 = zipEntryNameStr.substring(0, zipEntryNameStr.indexOf("/"));zipEntryName = zipEntryNameStr.substring(str1.length() + 1);}String outPath = (descDir + zipEntryName).replace("\\\\", "/");File outFile = new File(outPath.substring(0, outPath.lastIndexOf('/')));if (!outFile.exists()) {outFile.mkdirs();}if (new File(outPath).isDirectory()) {continue;}writeFile(outPath, zipInputStream);zipInputStream.closeEntry();}System.out.println("======解压成功=======");} catch (IOException e) {System.out.println("压缩包处理异常,异常信息{}" + e);}}//将流写到文件中public static void writeFile(String filePath, ZipInputStream zipInputStream) {try (OutputStream outputStream = new FileOutputStream(filePath)) {byte[] bytes = new byte[4096];int len;while ((len = zipInputStream.read(bytes)) != -1) {outputStream.write(bytes, 0, len);}} catch (IOException ex) {System.out.println("解压文件时,写出到文件出错");}}//测试方法public static void main(String[] args) throws IOException {String zipPath = "D:/test/测试文件.zip";String descDir = "D:/test/解压/";unzipFile(zipPath, descDir);}
}

结果如下

在这里插入图片描述


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

相关文章

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

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

Btrace安装步骤[详细]

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

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

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

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

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

BTrace安装和使用

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

BTrace分析和使用

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

BTrace入门

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

(转)btrace使用

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

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

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

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

介绍 btrace(又名 RheaTrace) 是抖音基础技术团队自研的一款高性能 Android Trace 工具,它基于 Systrace 实现,并针对 Systrace 不足之处加以改进,核心改进点如下。 效率提升:编译期间为 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可以做什么? 3.使用限制 4.使用方法及样例 4.1使用方法 4.2使用样例 2.查看哪些方法调用了 System.gc() ,调用栈是怎样的 3.打印某个类中某一方法的入参和返回值 5.拦截方法定义 定位方法 拦截时…

黄油刀ButterKnife的使用

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

Butterknife——黄油刀的基本使用

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

黄油刀的使用

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

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

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

黄油刀 butterKnife

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

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

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

黄油刀使用方法

一.首先在最外层的build.gradle里面导入 dependencies中导入 classpath com.neenbedankt.gradle.plugins:android-apt:1.8 例: 二.在内层 build.gradle 里面导入 compile com.jakewharton:butterknife:8.4.0 annotationProcessorcom.jakewharton:butterknife-co…

一把好用的黄油刀——Butter Knife

一把好用的黄油刀——Butter Knife 下载JAR包之后需要进行简单的Eclipse配置 Introduction(官方简介,稍后译) Annotate fields with BindView and a view ID for Butter Knife to find and automatically cast the corresponding view…