最近开发的时候遇到要获取到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压缩包里的文件及内容相关推荐

  1. java直接读取rar,Java无需解压直接读取Zip文件和文件内容

    1. 解析zip文件读取文件流: package test; import java.io.BufferedInputStream; import java.io.BufferedReader; im ...

  2. linux看zip的目录结构,无需解压如何查看一个归档或压缩文件的内容

    在本教程中,我们将学习如何在类 Unix 系统中查看一个归档或者压缩文件的内容而无需实际解压它.在深入之前,让我们先厘清归档和压缩文件的概念,它们之间有显著不同.归档是将多个文件或者目录归并到一个文件 ...

  3. 批量解压多个zip压缩包并将解压出来的文件以该压缩包的名称重命名

    批量解压多个zip压缩包并将解压出来的文件以该压缩包的名称重命名.bat 复制下面的内容保存成bat文件即可运行: @echo off rem 批量解压多个zip压缩包并将解压出来的文件以该压缩包的名 ...

  4. java实现解压rar5和zip

    public class Unrar {//服务器需要安装winrarpublic static final String winrarPath = "C://Program Files// ...

  5. Java解压上传zip或rar文件,并解压遍历文件中的html的路径

    1.本文只提供了一个功能的代码 public String addFreeMarker() throws Exception {HttpSession session = request.getSes ...

  6. 查看一个归档或压缩文件的内容而无需解压它

    查看一个归档或者压缩文件的内容而无需解压它 得益于 Linux 社区,有很多命令行工具可以来达成上面的目标.下面就让我们来看看使用它们的一些示例. 1.使用 vim 编辑器 vim 不只是一个编辑器, ...

  7. java读取zip文件名_java无需解压zip压缩包直接读取包内的文件名(含中文)

    java自带了java.util.zip工具可以实现在不解压zip压缩包的情况下读取包内文件的文件名:(注:只能是ZIP格式的,rar我试了不行)代码如下: public static String ...

  8. Java递归解压zip压缩包

    场景:zip压缩包里面嵌套多层文件夹或者zip压缩包: 使用递归的方式进行解压,解压后得到的目录结构和压缩包目录结构完全一致,非常好用! package com.zhh.api.util;import ...

  9. 使用Java生成的ZIP压缩包解压时出现不可预料的压缩文件末端的解决方案

    使用Java生成的ZIP压缩包解压时出现不可预料的压缩文件末端的解决方案 问题描述: 如下图所示,在解压Java程序生成的ZIP压缩包时出现不可预料的压缩文件末端, 问题分袖: 出现上面的情况,大概有 ...

最新文章

  1. 数学建模——逻辑回归模型Python代码
  2. python网络编程(八)
  3. Django中related_name的作用
  4. scrapy-redis 配置 settings
  5. 判别模型、生成模型与朴素贝叶斯方法
  6. 黑猫警长 stl_如何使用当地警长保护您的信息
  7. [2018.07.10 T3]数论题
  8. 学习JSP大学实用教程
  9. 第一章 行列式 第六节 行列式按行(列)展开
  10. 教你用Java获取IP归属地
  11. cocos2d-x传智播客_Hanselminutes播客30-Outlook加载项和个人生产力增强器
  12. Flutter从相册选择图片并显示出来,上传到服务器
  13. 女程序员的工位,藏着她们鲜衣怒码的人生 | 3·8特辑
  14. 小程序 input自动聚焦唤起键盘
  15. linux中的sleep函数和delay函数
  16. IDEA 设置保存时自动格式化代码 - 英文界面
  17. 原来Oracle也不喜欢“蜀黍(r6笔记第54天)
  18. MSVC编译器-C2001 常量中有换行符错误解决方法
  19. 网络安全专业应届生必备的几个实用工具,快收藏
  20. 2012年下半年软件评测师上午试题

热门文章

  1. Java数据类型:基本数据类型和引用数据类型
  2. 全世界公认最美的经典爱情句子
  3. 学习强国-为中华崛起而学习
  4. 分享113个HTML艺术时尚模板,总有一款适合您
  5. EtherCAT主站SOEM函数详解---- ecx_readstate、ecx_writestate
  6. 如何用查看wifi密码
  7. 超漂亮的前台页面模板——html+css+js+框架
  8. PDF限制编辑怎么解决
  9. “人人都是产品经理”之歪门邪道
  10. 一位真正的科学思想家: 纪念人工智能之父Marvin Minsky教授