Java 截压缩包(zip包),解析xml文件-工具类

news2024/11/24 5:57:57

Java 截压缩包(zip包),解析xml文件-工具类

技术:在Java中,使用Java自带的java.util.zip.ZipFile包

代码示例如下:
注1:在下面的代码中,zipFilePath替换为要解压缩的.zip文件的实际路径,destDirectory替换为要解压到的目标目录的实际路径;接着运行unzip方法即可将.zip文件解压缩到目标目录。
注2:解压操作可能涉及到大量的文件和数据,建议在处理大型zip文件时使用适当的缓冲区大小,下面代码中使用了每次读取1024字节的缓冲区,可根据具体需要调整。

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;

/**
 * <p>ClassName: UnzipUtil</p>
 * <p>Description: zip包解压缩工具类</p>
 * <p>Author: spring</p>
 * <p>Date: 2024-06-12</p>
 */
public class UnzipUtil {

    public static void main(String[] args) {
            String zipFilePath = "/home/kone/test20240612.zip";
            String destDirectory = "/home/kone/extracted";
            unzip(zipFilePath, destDirectory);
    }

    public static void unzip(String zipFilePath, String destDirectory) {
        File destDir = new File(destDirectory);
        if (!destDir.exists()) {
            destDir.mkdir();
        }
        try (ZipInputStream zipIn = new ZipInputStream(new FileInputStream(zipFilePath))) {
            ZipEntry entry = zipIn.getNextEntry();
            while (entry != null) {
                String filePath = destDirectory + File.separator + entry.getName();
                if (!entry.isDirectory()) {
                    extractFile(zipIn, filePath);
                } else {
                    File dir = new File(filePath);
                    dir.mkdir();
                }
                zipIn.closeEntry();
                entry = zipIn.getNextEntry();
                System.out.println("Successfully extracted zip file.");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private static void extractFile(ZipInputStream zipIn, String filePath) throws IOException {
        try (FileOutputStream fos = new FileOutputStream(filePath)){
            byte[] buffer = new byte[1024];
            int bytesRead;
            while ((bytesRead = zipIn.read(buffer)) != -1) {
                fos.write(buffer, 0, bytesRead);
            }
        }
    }

}

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1817626.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

编译原理-程序设计语言的设计

机器语言:二进制、机器相关 汇编语言:助记符、机器相关(机器语言与汇编语言都是低级语言) 高级语言:接近自然语言、机器无关 把一种语言程序编写的转换成完全等效的另一种语言编写的程序为翻译。 编译程序: 源程序语言是高级语言,目标程序语言是汇编语言或机器语言之类…

*MySQL事务

目录 一、概念理解&#xff1a; 二、回滚&#xff08;rollback&#xff09; 三、事务的四大特性&#xff08;ACID&#xff09;&#xff1a; 1&#xff09;原子性&#xff08;Atomicity&#xff09; 2&#xff09;一致性&#xff08;Consistency&#xff09; 3&#xff09;隔…

k8s nginx.conf配置文件配置

无状态nginx配置nginx.conf覆盖容器配置nginx.conf 代码&#xff1a;events {worker_connections 1024; }http {include /etc/nginx/mime.types;default_type application/octet-stream;log_format main $remote_addr - $remote_user [$time_local] "$request&q…

服务器数据恢复—vxfs文件系统元数据被破坏的数据恢复案例

服务器存储数据恢复环境&#xff1a; 某品牌MSA2000服务器存储中有一组由8块SAS硬盘组建的raid5磁盘阵列&#xff0c;其中包含一块热备盘。分配了6个LUN&#xff0c;均分配给HP-Unix小机使用。磁盘分区由LVM进行管理&#xff0c;存放的数据主要为Oracle数据库及OA服务端。 服务…

iOS--oc对象,类,和元类本质

iOS--oc对象&#xff0c;类&#xff0c;和元类本质 前言实例对象的具体结构自定义类对象的结构继承关系 类信息的存放对isa、superclass总结 前言 最近在学习runtime的过程中&#xff0c;发现其中消息发送-动态方法解析-消息转发中涉及到了大量的类与对象的底层知识&#xff0…

【LeetCode滑动窗口算法】长度最小的子数组 难度:中等

我们先看一下题目描述&#xff1a; 解法一&#xff1a;暴力枚举 时间复杂度&#xff1a;o(n^3) class Solution { public:int minSubArrayLen(int target, vector<int>& nums){int i 0, j 0;vector<int> v;for (;i < nums.size();i){int sum nums[i];fo…

从ES的JVM配置起步思考JVM常见参数优化

目录 一、真实查看参数 &#xff08;一&#xff09;-XX:PrintCommandLineFlags &#xff08;二&#xff09;-XX:PrintFlagsFinal 二、堆空间的配置 &#xff08;一&#xff09;默认配置 &#xff08;二&#xff09;配置Elasticsearch堆内存时&#xff0c;将初始大小设置为…

.net8 blazor auto模式很爽(二)用.net8创建Blazor自动模式项目

在vs2022中创建新项目&#xff0c;在搜索框里输入blazor&#xff0c;选择blazor web app 在其他信息里框架选.net8&#xff0c;模式选择auto,点创建。 我们可以看到&#xff0c;vs自动创建了两个项目。一个叫BlazorApp1&#xff0c;另外一个叫BlazorApp1.Client。没有Client就…

链表题目之指定区间处理

前言 链表中有一些题目是需要知道并且记住对应的技巧的&#xff0c;有一些题目就是基本的链表技巧手动模拟推演注意细节等。 对于需要知道并且记住对应技巧的题目会有专门的一栏进行讲解&#xff0c;此类题目主要有&#xff1a;相交链表、环形链表、回文链表等&#xff0c;这些…

网络地图的发展历程

位置以及我们与位置的互动方式已在我们的生活中无处不在。我们的网络地图技术发展到今天这一步&#xff0c;涉及一系列个人、公司和想法&#xff0c;这些最终塑造了我们与世界的互动方式。这篇文章能帮助您了解我们是如何一步步走到今天的。即网络地图的发展历史! 制图学的简要…

笨蛋学算法之LeetCodeHot100_4_移动零(Java)

package com.lsy.leetcodehot100;public class _Hot4_移动零 {public static int[] moveZeroes(int[] nums){//判断数组是否为nullif(numsnull && nums.length0){return null;}/*** 初始化两个指针 i 和 noZero&#xff0c;其中 i 用于遍历数组&#xff0c;noZero 用于…

【讲解下Stylus入门方法】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

探索Facebook对世界各地文化的影响

随着数字化时代的到来&#xff0c;社交媒体已成为连接世界各地人们的重要平台之一。而在这个领域的巨头之一&#xff0c;Facebook不仅是人们沟通交流的场所&#xff0c;更是一座桥梁&#xff0c;将不同地域、文化的人们联系在一起。本文将探索Facebook对世界各地文化的影响&…

vue2.0和vue3.0获取当前文件夹下的所有vue文件区别

文章目录 vue2.0vue3.0当前文件夹下的所有vue文件区别 vue2.0 在Vue 2.0项目中&#xff0c;要获取当前文件夹下的所有.vue文件&#xff0c;你可以使用Node.js的文件系统模块&#xff08;fs&#xff09;和路径模块&#xff08;path&#xff09;来实现。以下是一个简单的示例&am…

IO流打印流

打印流 IO流打印流是Java中用来将数据打印到输出流的工具。打印流提供了方便的方法来格式化和输出数据&#xff0c;可以用于将数据输出到控制台、文件或网络连接。 分类:打印流一般是指:PrintStream&#xff0c;PrintWriter两个类 特点1:打印流只操作文件目的地&#xff0c;…

SwiftUI中自定义Shape与AnimateableData的使用

上一篇文章主要介绍了一下在SwiftUI中如何自定义Shape&#xff0c;本篇文章主要介绍Shape中的 一个关键的属性AnimatableData&#xff0c;它用于定义可以被动画化的数据。通过实现 Animatable 协议&#xff0c;可以让自定义视图或图形响应动画变化。 AnimatableData 是 Animata…

Github 2024-06-13 Go开源项目日报Top10

根据Github Trendings的统计,今日(2024-06-13统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Go项目10TypeScript项目1Shell项目1多存储文件列表/WebDAV程序 创建周期:1265 天开发语言:Go协议类型:GNU Affero General Public License v…

【安装笔记-20240612-Linux-内网穿透服务之cpolar极点云】

安装笔记-系列文章目录 安装笔记-20240612-Linux-内网穿透服务之 cpolar 极点云 文章目录 安装笔记-系列文章目录安装笔记-20240612-Linux-内网穿透服务之 cpolar 极点云 前言一、软件介绍名称&#xff1a;cpolar极点云主页官方介绍 二、安装步骤测试版本&#xff1a;openwrt-…

.net8 blazor auto模式很爽(一)Blazor WebAssembly(WASM)与Server在.net8中的完美结合

我们在上一章中说到Blazor的WASM和Server模式各有优缺点。在.net8之前&#xff0c;这两种模式是独立的&#xff0c;你的项目只能选其中之一。但是.net8出现了一种叫自动模式&#xff0c;官方解释是&#xff1a;开发者在创建 Blazor 项目时不再显式区分是 Blazor Server 还是 Bl…

TIA博途Wincc与S7-1500 (V2.9) 或S7-1200 (V4.5) 及更高版本固件PLC通信失败的原因汇总

TIA博途Wincc与S7-1500 (V2.9) 或S7-1200 (V4.5) 及更高版本固件PLC通信失败的原因汇总 从TIA Portal V17开始,对于S7-1500PLC新增了V2.9的固件,S7-1200新增了V4.5的固件,PLC侧默认激活了“仅支持PG/PC和HMI的安全通信”, 注意事项1 如果PLC侧激活了“仅支持PG/PC和HMI的安…