专栏首页软测小生java直接读取.zip压缩文件ZipEntry.getsize()总是返回-1?

java直接读取.zip压缩文件ZipEntry.getsize()总是返回-1?

今天在项目中遇到一个问题,有一个需求是需要验证下载的ZIP文件,解压读取ZIP文件夹内部的文件,文件名称以及大小。 网上搜了下,发现,不用解压可以直接读取,代码如下:

但是后面发现一个问题,读取的时候总是返回-1 ze.getSize()的值总是-1,可是名字都到了。 找不到法子,着实无奈,后面换了种方式,干脆将文件解压出来之后,在对文件里面的内容进行验证文件名和文件大小好了

最后发现,着实繁琐,能不能三两行代码解决问题。

后来又继续网上搜索了半天,问了下同事,又继续搜索,突然之间找到了一种新的解决方式,无比开心!

分析下原因是因为:

把判断条件由【(ze=zin.getNextEntry())!=null】换成【zipEnum.hasMoreElements ()】

使用了枚举, Enumeration 接口(枚举)。

通常用 Enumeration 中的以下两个方法打印向量中的所有元素:

(1) boolean hasMoreElements(); // 是否还有元素,如果返回 true ,则表示至少含有一个元素

(2) public Object nextElement(); // 如果 Enumeration 枚举对象还含有元素,该方法返回对象中的下一个元素。如果没有,则抛出NoSuchElementException 异常。

总结:遇到问题,换个解决思路,多从互联网搜索可用信息; 相信同事和朋友,实在不行张开嘴巴问一问,或许同事遇到过,不一定要继续填坑,或者再造轮子;即便没遇到过换一个人的思考方式将会是解决问题的方法。

本文分享自微信公众号 - 软测小生(ruancexiaosheng),作者:小汉

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-11-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Appium移动端自动化测试--测试用例改造

    可见下面的两个框架的脚本,略有不同,setup和setUp,teardown和tearDown。

    软测小生
  • Appium移动端自动化测试--capability使用和常用设备交互命令

    Desired Capabilities是在启动一个 session 的时候是必须提供的一些参数。 Desired Capabilities 本质上是以 ke...

    软测小生
  • Appium移动端自动化测试--使用IDE编辑并强化脚本

    Appium客户端安装安装Python IDE-PycharmJava IDE 安装使用隐式等待让用例更稳定隐式等待启动Appium非GUI模式:Appium ...

    软测小生
  • 基于HT for Web矢量实现HTML5文件上传进度条

    在HTML中,在文件上传的过程中,很多情况都是没有任何的提示,这在体验上很不好,用户都不知道到时有没有在上传、上传成功了没有,所以今天给大家介绍的内容是通过HT...

    HT for Web
  • HTML5矢量实现文件上传进度条

    HT_hightopo
  • 基于HT for Web矢量实现HTML5文件上传进度条

    HT_hightopo
  • HTML5矢量实现文件上传进度条

    在HTML中,在文件上传的过程中,很多情况都是没有任何的提示,这在体验上很不好,用户都不知道到时有没有在上传、上传成功了没有,所以今天给大家介绍的内容是通过HT...

    HT for Web
  • 使用Prometheus监控Linux系统各项指标

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明...

    Jerry Wang
  • Spring Security 实战干货:登录成功后返回 JWT Token

    欢迎阅读 Spring Security 实战干货 系列文章,上一文 我们实现了 JWT 工具。本篇我们将一起探讨如何将 JWT 与 Spring Securi...

    码农小胖哥
  • [项目] 企业邮箱读信接口的缓存改造过程

    邮箱中最重要的一个功能就是读取一封信 , 也是使用的最多的接口 , 对此接口的读取效率是有一定要求的.

    陶士涵

扫码关注云+社区

领取腾讯云代金券