Java 无需解压直接读取ZIP压缩包里的文件及内容
最近开发的时候遇到要获取到zip压缩包里面的文件内容,一开始的想法是先通过代码执行解压,然后读取文件内容,但是感觉好麻烦,于是度了一下,发现可以无需解压直接读取,而且还是JDK提供给我们的工具。
解决方案就是通过ZipInputStream来读取。
ZipInputStream在JDK中的util包中,而我们平时用的FileInputStream等都是在io包中的。
示例如下:
@Testpublic void test() throws Exception {//获取文件输入流FileInputStream input = new FileInputStream("D:\\2022-03-28.zip");//获取ZIP输入流(一定要指定字符集Charset.forName("GBK")否则会报java.lang.IllegalArgumentException: MALFORMED)ZipInputStream zipInputStream = new ZipInputStream(new BufferedInputStream(input), Charset.forName("GBK"));//定义ZipEntry置为null,避免由于重复调用zipInputStream.getNextEntry造成的不必要的问题ZipEntry ze;List<List<Object>> list;//循环遍历while ((ze = zipInputStream.getNextEntry()) != null) {ByteArrayOutputStream baos = new ByteArrayOutputStream();if (!ze.isDirectory() && ze.toString().endsWith("xls")) {//读取byte[] buffer = new byte[1024];int len;while ((len = zipInputStream.read(buffer)) > -1) {baos.write(buffer, 0, len);}baos.flush();InputStream stream = new ByteArrayInputStream(baos.toByteArray()); //excel 流//根据excel输入流读取EXCEL中的数据ExcelReader excelReader = ExcelUtil.getReader(stream);list = excelReader.read(2, excelReader.getRowCount());for(List<Object> objList : list){objList.get(0);objList.get(1); //获取到数据进行相关处理......}}}//一定记得关闭流zipInputStream.closeEntry();input.close();}
Java 无需解压直接读取ZIP压缩包里的文件及内容相关推荐
- java直接读取rar,Java无需解压直接读取Zip文件和文件内容
1. 解析zip文件读取文件流: package test; import java.io.BufferedInputStream; import java.io.BufferedReader; im ...
- linux看zip的目录结构,无需解压如何查看一个归档或压缩文件的内容
在本教程中,我们将学习如何在类 Unix 系统中查看一个归档或者压缩文件的内容而无需实际解压它.在深入之前,让我们先厘清归档和压缩文件的概念,它们之间有显著不同.归档是将多个文件或者目录归并到一个文件 ...
- 批量解压多个zip压缩包并将解压出来的文件以该压缩包的名称重命名
批量解压多个zip压缩包并将解压出来的文件以该压缩包的名称重命名.bat 复制下面的内容保存成bat文件即可运行: @echo off rem 批量解压多个zip压缩包并将解压出来的文件以该压缩包的名 ...
- java实现解压rar5和zip
public class Unrar {//服务器需要安装winrarpublic static final String winrarPath = "C://Program Files// ...
- Java解压上传zip或rar文件,并解压遍历文件中的html的路径
1.本文只提供了一个功能的代码 public String addFreeMarker() throws Exception {HttpSession session = request.getSes ...
- 查看一个归档或压缩文件的内容而无需解压它
查看一个归档或者压缩文件的内容而无需解压它 得益于 Linux 社区,有很多命令行工具可以来达成上面的目标.下面就让我们来看看使用它们的一些示例. 1.使用 vim 编辑器 vim 不只是一个编辑器, ...
- java读取zip文件名_java无需解压zip压缩包直接读取包内的文件名(含中文)
java自带了java.util.zip工具可以实现在不解压zip压缩包的情况下读取包内文件的文件名:(注:只能是ZIP格式的,rar我试了不行)代码如下: public static String ...
- Java递归解压zip压缩包
场景:zip压缩包里面嵌套多层文件夹或者zip压缩包: 使用递归的方式进行解压,解压后得到的目录结构和压缩包目录结构完全一致,非常好用! package com.zhh.api.util;import ...
- 使用Java生成的ZIP压缩包解压时出现不可预料的压缩文件末端的解决方案
使用Java生成的ZIP压缩包解压时出现不可预料的压缩文件末端的解决方案 问题描述: 如下图所示,在解压Java程序生成的ZIP压缩包时出现不可预料的压缩文件末端, 问题分袖: 出现上面的情况,大概有 ...
最新文章
- 数学建模——逻辑回归模型Python代码
- python网络编程(八)
- Django中related_name的作用
- scrapy-redis 配置 settings
- 判别模型、生成模型与朴素贝叶斯方法
- 黑猫警长 stl_如何使用当地警长保护您的信息
- [2018.07.10 T3]数论题
- 学习JSP大学实用教程
- 第一章 行列式 第六节 行列式按行(列)展开
- 教你用Java获取IP归属地
- cocos2d-x传智播客_Hanselminutes播客30-Outlook加载项和个人生产力增强器
- Flutter从相册选择图片并显示出来,上传到服务器
- 女程序员的工位,藏着她们鲜衣怒码的人生 | 3·8特辑
- 小程序 input自动聚焦唤起键盘
- linux中的sleep函数和delay函数
- IDEA 设置保存时自动格式化代码 - 英文界面
- 原来Oracle也不喜欢“蜀黍(r6笔记第54天)
- MSVC编译器-C2001 常量中有换行符错误解决方法
- 网络安全专业应届生必备的几个实用工具,快收藏
- 2012年下半年软件评测师上午试题