1、问题情景

需要监控特定邮箱邮件, 解析邮件中的zip附件, 然后解析zip文件。

拿到zipInputStream之后,zipEntry=zipInputStream.getNextEntry();

zipEntry.getSize()=-1

zipEntry.getExtra()=null

这样就拿不到文件数据流

2、解决方案

查看ZipInputStream的官方文档

getNextEntry() ,读取下一个ZIP文件条目,并将流定位在条目数据的开头。

所以猜测调用zipInputStream.getNextEntry()之后zipInputStream当前定位的文件流位置就是zipEntry代表的文件流的开始位置。

但是结束位置是哪里?试一试把流全部读取出来生成文件,结果能正常生成需要的文件。

不需要考虑getSize=-1

错误理解:zipInputStream中的流是zip包里面所有的文件流, 每个文件需要指定流开始,结束位置才能正确读取。

正确结论:zipInputStream调用getNextEntry之后,zipInputStream会正确定位到当前文件的数据流位置, 且只加载当前文件的数据流,全部读取出来生成文件即可。

zipEntry.getSize()=-1相关推荐

  1. getsize java_Java ZipEntry getSize()用法及代码示例

    getSize()函数是java.util.zip软件包的一部分.该函数返回作为参数传递的特定ZipEntry的未压缩大小,如果未知则返回-1.函数签名: public long getSize() ...

  2. 解决ZipEntry.getSize()返回-1的问题

    今天要写一个测试程序,模拟业务流程,解压缩zip文件,将InputStream流上传到对象存储集群上.以下是生成zip文件的代码: int size_k = 100; int num = 100; S ...

  3. Java读取ZIP文件ZipEntry.getsize()总是返回-1?

    解决方法(Code)在文章最后面,耐心看完 今天在项目中遇到一个问题,有一个需求是需要验证下载的ZIP文件,解压读取ZIP文件夹内部的文件,文件名称以及大小. 网上搜了下,发现,不用解压可以直接读取, ...

  4. java定义一个getsize方法,long getSize()

    long getSize() 描述 (Description) java.util.zip.ZipEntry.getSize()方法返回条目数据的未压缩大小,如果未知,则返回-1. 声明 (Decla ...

  5. android 汉字编码,Android解压中文乱码

    在Android中内置有解压的工具,一般可以使用下面的方法解压: �注意import的包: 因 import java.util.zip.ZipEntry; import java.util.zip. ...

  6. Android签名机制之---签名验证过程详解

    一.前言 今天是元旦,也是Single Dog的嚎叫之日,只能写博客来祛除寂寞了,今天我们继续来看一下Android中的签名机制的姊妹篇:Android中是如何验证一个Apk的签名.在前一篇文章中我们 ...

  7. 在Java 8中使用Stream API列出ZIP文件的内容

    在Java 8 java.util.zip.ZipFile配备了stream方法,该方法可以非常轻松地浏览ZIP文件条目. 在此博客文章中,我将展示许多示例,这些示例显示了我们可以如何快速浏览ZIP文 ...

  8. java压缩/解压缩zip格式文件

    因为项目要用到压缩.解压缩zip格式压缩包,只好自己封装一个,对于网上流行的中文乱码的问题,本文的解决方法是用apache的包代替jdk里的.基本上还是比较好用的. 废话少说,直接上代码. 1 pac ...

  9. 递归的使用不当 导致 压缩文件不能压缩二级目录

    错误展示: 错误代码: import java.io.*; import java.util.Enumeration; import java.util.zip.ZipEntry; import ja ...

  10. Apache工具库——Apache Commons的使用

    Apache Commons是Apache开源的一个java组件库,其中包含了大量子项目,其中常用的组件有: 组件 功能介绍 BeanUtils 提供了对于JavaBean进行各种操作,克隆对象,属性 ...

最新文章

  1. Redux 学习总结 (React)
  2. 优化老手分享网络优化中的4大方法
  3. 知识图谱基础知识之一——人人都能理解的知识图谱
  4. telnet到设备里 php_PHP自动生成设备周检修计划
  5. WPF通用窗体模板【2】
  6. Java判断一个数是不是快乐数
  7. mybatis-plus根据多个字段排序_PHP中Thinkphp5框架的多字段排序
  8. java多线程在单例模式下是否需要同步
  9. 我的世界装mod要下java_【新人必看教程】我的世界HMCL下载安装mod模组
  10. Unity热更之旧项目救星——Xlua热补丁修复
  11. 微分几何笔记(1)——参数曲线、内积、外积
  12. android6最新版本,安卓版“AirDrop”发布,安卓6版本以上都能用!
  13. 径向基函数拟合(RBF Fitting)
  14. iOS apple 登录
  15. tensorflow框架下,多进程model.predict(x)无响应/暂停/无输出
  16. 菁搜FTP搜索引擎总体框架
  17. win7产生大量evtx文件_Win7退役:用户还在坚守,为何微软却执意放弃?
  18. c语言求50以内阶乘,C语言之数组50以内的阶乘.doc
  19. Plu2006即将开赛,参赛选手名单公布
  20. 基于Singer映射和参数位置自适应更新机制的改进被囊群算法

热门文章

  1. 语音信号预加重及matlab实现
  2. 管家婆登录服务器未响应,管家婆辉煌登录点击下一步没有反应解决办法
  3. Android WebView基本使用
  4. 自学编程,看书还是视频?
  5. 解决mysql闪退问题
  6. 轴承后缀ce和ca_SKF各类型轴承后缀含义
  7. Hash表的时间复杂度为什么是O(1)?
  8. 利用python requests库在百度图库上下载图片
  9. python将linux时间戳转换,Unix时间戳转换(python)
  10. stuiod3t-2019030.dmg下载及studio3t macOS Cracking教程