当前位置: 首页 > news >正文

使用 ZipArchiveInputStream 读取压缩包内文件总数

读取压缩包内文件总数

简介

ZipArchiveInputStream 是 Apache Commons Compress 库中的一个类,用于读取 ZIP 格式的压缩文件。在处理 ZIP 文件时,编码格式是一个重要的问题,因为它决定了如何解释文件中的字符数据。通常情况下,ZIP 文件中的文本文件是以特定的字符编码格式存储的,例如 UTF-8 或 ISO-8859-1。但是,ZIP 规范并没有规定文件的编码格式,因此不同的 ZIP 文件可能使用不同的编码。

ZipArchiveInputStream 允许用户设置编码格式,以正确处理 ZIP 文件中的文件名或文件内容。默认情况下,ZipArchiveInputStream 可能使用 UTF-8 编码来读取文件名,但如果 ZIP 文件中的文件名使用了不同的编码,那么就需要显式地设置正确的编码格式。

例如,如果 ZIP 文件中的文件名使用了 GBK 编码,那么在创建 ZipArchiveInputStream 对象时,需要调用 setEncoding("GBK") 方法来设置正确的编码格式。这样,ZipArchiveInputStream 就能正确地解析文件名,避免乱码问题。

使用 ZipArchiveInputStream 的基本步骤如下:

  1. 创建一个 ZipFile 对象,传入一个 ZIP 文件的 File 对象或 ZIP 文件的路径作为参数。
  2. 通过 ZipFile 对象的 getInputStream 方法获取一个 InputStream 对象,用于读取 ZIP 文件的数据。
  3. 创建一个 ZipArchiveInputStream 对象,传入上一步获取的 InputStream 对象作为参数。
  4. 使用 ZipArchiveInputStream 对象的 getNextEntry 方法来获取 ZIP 文件中的每一个条目(即压缩包内的文件或文件夹),并对其进行处理。可以使用 read 方法读取条目的数据。
  5. 处理完一个条目后,使用 closeEntry 方法关闭该条目。

代码逻辑

public class Test {public static void main(String[] args) {AtomicInteger atomicInteger = new AtomicInteger(0);File file = FileUtil.file("C:\\Users\\a\\Downloads\\train_val_images.zip");try (ZipArchiveInputStream inputStream = new ZipArchiveInputStream(new FileInputStream(file),UTF_8)){ZipArchiveEntry nextZipEntry;while ( (nextZipEntry = inputStream.getNextZipEntry()) != null)if (!nextZipEntry.isDirectory()){atomicInteger.incrementAndGet();}}  catch (Exception e) {e.printStackTrace();}System.out.println(atomicInteger.intValue());}
}

测试效果

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

相关文章:

使用 ZipArchiveInputStream 读取压缩包内文件总数

读取压缩包内文件总数 简介 ZipArchiveInputStream 是 Apache Commons Compress 库中的一个类,用于读取 ZIP 格式的压缩文件。在处理 ZIP 文件时,编码格式是一个重要的问题,因为它决定了如何解释文件中的字符数据。通常情况下,Z…...

JavaScript对象修饰教程

在JavaScript中,对象修饰是一种常见的编程模式,用于动态地向对象添加新的功能或修改现有功能,同时保持对象的原始结构不变。对象修饰可以帮助我们实现代码的复用、扩展和维护,让代码更加灵活和可扩展。本文将深入探讨JavaScript对…...

转置卷积(transposed-conv)

一、什么是转置卷积 1、转置卷积的背景 通常,对图像进行多次卷积运算后,特征图的尺寸会不断缩小。而对于某些特定任务 (如图像分割和图像生成等),需将图像恢复到原尺寸再操作。这个将图像由小分辨率映射到大分辨率的尺寸恢复操作&#xff0c…...

P1481 魔族密码

P1481 魔族密码 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 字典树 在插入字符串 s s s时&#xff0c;不断记录 s 0... k s_{0...k} s0...k​的个数取最大即可。 #include <bits/stdc.h> using namespace std; const int N 1e5 21; int cnt[N], tr[N][30], idx,…...

无人机/飞控--ArduPilot、PX4学习记录(2)

这是一篇碎碎念&#xff0c;零零碎碎的记录了环境配置过程&#xff0c;仅供本人记录学习历程和参考。(记录的挺乱的&#xff0c;但是文章链接里的博客写的是真好) 本章主要完成的目标&#xff1a; 安装PX4 并 成功运行出3D无人机界面。 参考文章&#xff1a; 搭建PX4环境&…...

【Arxml专题】-29-使用Cantools将CAN Matrix Arxml自动生成C语言代码

目录 1 安装Python和Cantools 1.1 查看Python已安装的Package包 1.2 在Python中安装Cantools插件包 1.3 获取更多Cantools工具的更新动态 2 CAN Matrix Arxml自动生成C语言代码 2.1 批处理文件CAN_Matrix_Arxml_To_C.bat内容说明 2.2 CAN Matrix Arxml文件要求 2.3 如何…...

【id:21】【20分】E. 抄袭查找(结构体+指针+函数)

题目描述 已知一群学生的考试试卷&#xff0c;要求对试卷内容进行对比&#xff0c;查找是否有抄袭。 每张试卷包含&#xff1a;学号&#xff08;整数类型&#xff09;、题目1答案&#xff08;字符串类型&#xff09;、题目2答案&#xff08;字符串类型&#xff09;、题目3答案…...

ASP.NET-常用控件总结

一、ASP.NET基础控件 1、asp:TextBox (输入框) ASP.NET TextBox 控件用于接收用户输入。 <asp:TextBox ID"txtInput" runat"server"></asp:TextBox>2、asp:DropDownList (下拉框) ASP.NET DropDownList 控件用于提供一个下拉列表供用户选择…...

SpringBoot3整合Mybatis-Plus与PageHelper包冲突解决

&#x1f60a; 作者&#xff1a; 一恍过去 &#x1f496; 主页&#xff1a; https://blog.csdn.net/zhuocailing3390 &#x1f38a; 社区&#xff1a; Java技术栈交流 &#x1f389; 主题&#xff1a; SpringBoot3整合Mybatis-Plus与PageHelper包冲突解决 ⏱️ 创作时间&a…...

MQTT Keep Alive机制

MQTT 协议是承载于 TCP 协议之上的&#xff0c; 而 TCP 协议以连接为导向&#xff0c; 在连接双方之间&#xff0c; 提供稳定、 有序的字节流功能。 但是&#xff0c; 在部分情况下&#xff0c; TCP 可能出现半连接问题。 所谓半连接&#xff0c; 是指某一方的连接已经断开或者…...

基于springboot+vue的游戏交易系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…...

高职(大专)结构化面试之答题思路

目录 一、岗位认知 二、职教热点 三、教育教学 四、人际关系 五、组织管理 六、应急应变 七、时政与教育 八、专业知识 一、岗位认知 考试方向&#xff1a;主要考察对岗位的全面认识、职业目标、职业规划、职业理想。 必背题目&#xff1a; 1.“你为什么要报考我们学校的教师岗…...

Python基础学习笔记(一)

Python简介 Python 语言是一种跨平台、开源、免费、解释型、面向对象、动态数据类型的高级程序设计语言。早期版本的 Python 被称作是 Python1&#xff1b;Python2 最后一个版本是 2.7&#xff1b;Python3 是目前最活跃的版 本&#xff0c;基本上新开发的 Python 代码都会支持…...

机器学习-可解释性机器学习:支持向量机与fastshap的可视化模型解析

一、引言 支持向量机(Support Vector Machine, SVM)作为一种经典的监督学习方法&#xff0c;在分类和回归问题中表现出色。其优点之一是生成的模型具有较好的泛化能力和可解释性&#xff0c;能够清晰地展示特征对于分类的重要性。 fastshap是一种用于快速计算SHAP值&#xff08…...

32.768K晶振X1A000141000300适用于无人驾驶汽车电子设备

科技的发展带动电子元器件的发展电子元器件-“晶振”为现代的科技带来了巨大的贡献&#xff0c;用小小的身体发挥着大大的能量。 近两年无人驾驶汽车热度很高&#xff0c;不少汽车巨头都已入局。但这项技术的难度不小&#xff0c;相信在未来几年里&#xff0c;无人驾驶汽车这项…...

利用autodl服务器跑模型

1. 租用服务器 本地改模型 服务器 将改进好的、数据集处理好的模型压缩为zip文件上传到阿里云盘打开服务器AUTODL服务器&#xff0c;在主页中选择容器实例 在此位置进行开关机操作&#xff0c;若停止服务器&#xff0c;必须关机&#xff0c;不然会一直扣钱 2. 运行模型 选择…...

【微服务】分布式调度框架PowerJob使用详解

目录 一、前言 二、定时任务调度框架概述 2.1 为什么需要定时任务调度框架 2.2 定时任务调度使用场景 三、PowerJob 介绍 3.1 PowerJob 概述 3.2 PowerJob 功能特性 3.3 PowerJob 应用场景 3.4 PowerJob 与其他同类产品对比 四、PowerJob 部署 4.1 PowerJob 架构 4.…...

一命通关广度优先遍历

前言 在这篇文章之前&#xff0c;已对非线性结构遍历的另一种方法——深度优先遍历进行了讲解&#xff0c;其中很多概念词都是共用的。为了更好的阅读体验&#xff0c;最好先在掌握或起码了解dfs的基础上&#xff0c;再来阅读本文章&#xff0c;否则因为会有很多概念词看不明白…...

力扣4寻找两个正序数组的中位数

1.实验内容 给定两个大小分别为 m 和 n 的正序&#xff08;从小到大&#xff09;数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 2.实验目的 算法的时间复杂度应该为 O(log (mn)) 。 3.基本思路 碰到时间复杂度要求log的&#xff0c;肯定用二分查找&…...

jmeter之常用函数-第六天

1.常见函数&#xff1a; _counter 计数器函数 TRUE(每个用户都有自己的计数器) FALSE(所有用户共用一个计数器) _Random 随机数函数 参数1:取值范围最小值(包含) 参数2:取值范围最大值(包含) _time 获取当前时间的函数 无参: 获取的是距离 1970/01/01 00:00:00 的毫秒值 参…...

大模型---模型的后训练

目录 1.继续训练 2.SFT 3.对齐训练 这篇文章会讲三种不同的后训练方式:继续训练,SFT,对齐训练,这里先总体说一下。Dont Stop Pretraining把继续训练定义为多阶段自适应预训练,并证明在目标领域语料和任务相关无标注语料上继续预训练,通常能提升下游表现;SFT在对齐训练…...

Gartner Magic Quadrant for Data Center Switching 2025 | Gartner 数据中心交换魔力象限 2025

Gartner Magic Quadrant for Data Center Switching 2025 Gartner 魔力象限&#xff1a;数据中心网络交换机 2025 请访问原文链接&#xff1a;https://sysin.org/blog/gartner-magic-quadrant-data-center-switching-2025/ 查看最新版。原创作品&#xff0c;转载请保留出处。…...

Phi-4-mini-reasoning环境配置:CUDA版本兼容性检查与nvidia-smi验证

Phi-4-mini-reasoning环境配置&#xff1a;CUDA版本兼容性检查与nvidia-smi验证 1. 环境准备与CUDA兼容性检查 在部署Phi-4-mini-reasoning模型前&#xff0c;确保您的GPU环境满足基本要求是至关重要的第一步。这个轻量级开源模型虽然对硬件要求相对友好&#xff0c;但仍需要…...

GLM-OCR实战:5分钟搭建本地文档解析工具,支持文本、表格、公式

GLM-OCR实战&#xff1a;5分钟搭建本地文档解析工具&#xff0c;支持文本、表格、公式 1. 工具概览&#xff1a;为什么选择GLM-OCR&#xff1f; 在日常工作中&#xff0c;我们经常需要处理各种文档——可能是扫描的合同、研究报告的截图&#xff0c;或是包含复杂表格和公式的…...

MySQL基础阶段学习-SQL语句篇

前言 在后端开发与数据存储领域&#xff0c;MySQL 无疑是使用最广泛、生态最成熟的关系型数据库之一。作为一款开源免费、轻量高效的数据库管理系统&#xff0c;它凭借稳定可靠、易于上手、适配多种编程语言等优势&#xff0c;从小型个人项目到大型企业级应用都随处可见&#x…...

nlp_structbert_sentence-similarity_chinese-large保姆级教程:错误日志排查与常见报错解决方案

nlp_structbert_sentence-similarity_chinese-large保姆级教程&#xff1a;错误日志排查与常见报错解决方案 1. 工具简介&#xff1a;你的中文句子相似度分析助手 nlp_structbert_sentence-similarity_chinese-large 是一个专门处理中文句子相似度的强大工具。它基于阿里达摩…...

Laravel 8 中实现错误日志与调试日志分离的完整配置指南

本文详解如何在 Laravel 8 中精准分离错误日志&#xff08;laravel.log&#xff09;与调试日志&#xff08;debug.log&#xff09;&#xff0c;通过自定义日志通道、调整默认通道及显式调用策略&#xff0c;彻底避免错误消息误写入调试日志文件。 本文详解如何在 laravel …...

企业级Multi-Agent系统架构设计:微服务化与模块解耦最佳实践

企业级Multi-Agent系统架构设计:微服务化与模块解耦最佳实践 引言 在当今快速发展的技术领域,人工智能(AI)正从单一的模型驱动向更加智能、协作化的系统演进。其中,Multi-Agent系统(多智能体系统,MAS)作为一种新兴的技术范式,正在企业级应用中展现出巨大的潜力。想象…...

告别环境冲突!用Anaconda在PyCharm里为PyTorch项目创建独立的CUDA环境(保姆级图文)

深度学习工程师的终极武器&#xff1a;用Anaconda打造PyTorch项目的完美隔离环境 当你在深夜调试一个关键模型时&#xff0c;突然发现项目B的代码在项目A的环境中莫名其妙报错——这种场景对深度学习工程师来说再熟悉不过了。环境冲突就像编程世界里的"量子纠缠"&…...

从零到项目发布:用VSCode和CMake管理你的第一个C++小游戏(Windows平台实战)

从零构建C控制台游戏&#xff1a;VSCodeCMakeGit全流程实战指南 在Windows平台上开发C项目&#xff0c;很多初学者会遇到环境配置复杂、构建工具不熟悉、代码管理混乱等问题。本文将带你用VSCodeCMakeGit这套现代开发工具链&#xff0c;从零开始构建一个完整的控制台猜数字游戏…...