这几种错一般都是未关闭或者流的关闭顺序不对,可以使用try-resource

"D:\\huangzhengfile\\pretmp\\files\\wisdomAudit\\upload";是一级目录,该目录下全是文件哦

解压之后第一个文件或者最后一个文件是0kb,错误代码:

@Testvoid test4() throws FileNotFoundException {String name = "D:\\huangzhengfile\\pretmp\\files\\wisdomAudit\\upload";File file = new File(name);ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream("D:\\huangzhengfile\\pretmp\\wwww.zip"));if (file.isDirectory()) {for (File file1 : file.listFiles()) {try (FileInputStream in = new FileInputStream(file1)) {zipOut.putNextEntry(new ZipEntry(file1.getName()));int temp;byte[] bytes = new byte[1024];while ((temp = in.read(bytes)) != -1) {zipOut.write(bytes, 0, temp);}} catch (IOException ex) {ex.printStackTrace();}}}else {try (FileInputStream in = new FileInputStream(file)) {zipOut.putNextEntry(new ZipEntry(file.getName()));int temp;byte[] bytes = new byte[1024];while ((temp = in.read(bytes)) != -1) {zipOut.write(bytes, 0, temp);}} catch (Exception e) {e.printStackTrace();}finally {IOUtils.closeQuietly(zipOut);}}}

实在找不出问题在哪儿,最后将想到可能是流的关闭顺序,然后就ok了

代码改进:

@Testvoid test1() {String name = "D:\\huangzhengfile\\pretmp\\files\\wisdomAudit\\upload";try (ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream("D:\\huangzhengfile\\pretmp\\wwww.zip"))) {File file = new File(name);if (file.isDirectory()) {for (File file1 : file.listFiles()) {try (FileInputStream in = new FileInputStream(file1)) {zipOut.putNextEntry(new ZipEntry(file1.getName()));int temp;byte[] bytes = new byte[1024];while ((temp = in.read(bytes)) != -1) {zipOut.write(bytes, 0, temp);}} catch (IOException ex) {ex.printStackTrace();}}}else{try (FileInputStream in = new FileInputStream(file)) {zipOut.putNextEntry(new ZipEntry(file.getName()));int temp;byte[] bytes = new byte[1024];while ((temp = in.read(bytes)) != -1) {zipOut.write(bytes, 0, temp);}} catch (Exception e) {e.printStackTrace();}}}catch (Exception e){e.getMessage();}}

使用目录作为流汇报错,如下,所以代码之后判断为文件在使用流

@Testvoid test3() throws FileNotFoundException {String name = "D:\\huangzhengfile\\pretmp\\files\\wisdomAudit\\upload";File file = new File(name);FileInputStream fileinputStream = new FileInputStream(name);//会报错,目录创建流的时候汇报错System.out.println(fileinputStream);System.out.println(file.getName());File[] files = file.listFiles();List<String> collect = Stream.of(files).map(f->f.getPath()).collect(Collectors.toList());System.out.println(collect);}

java代码-zip解压不可预料的压缩文件末端一级压缩包中的文件为0kb以及目录创建流会报错相关推荐

  1. java代码实现解压文件_Java压缩/解压文件的实现代码

    用java压缩/解压文件: import java.io.*; import java.awt.*; import java.awt.event.*; import java.util.*; impo ...

  2. Java代码实现解压文件包和压缩文件的工具类

    最近开发任务比较多,这两天陆陆续续整理了一点资料上传一下,这个是前段时间用到的解压和压缩文件的工具类,网上找了一些,自己补充一下,现在先分享一下,希望对各位同学有所帮助! package com.as ...

  3. 安卓zip解压软件_手机压缩软件ZArchiver下载、使用教程丨免费、中文,支持7z、zip、rar等所有格式...

    点击上方云中栖居关注 ▲ 图片丨Google Play应用商店中的ZArchiver免费版.ZArchiver Donate捐赠版(Pro专业版)图标,两个版本功能基本上一样. ZArchiver自称 ...

  4. 安卓zip解压软件_[Android]压缩解压工具ZArchiver Pro高级直装版

    [简介]:ZArchiver Pro是一款安卓平台的压缩解压工具,能够在手机端解压常见的rar,zip,7z等压缩文件,本版为Pro高级直装版本,解锁高级功能,支持压缩包注释查看.支持中文文件名,(这 ...

  5. android zip解压出错,常见的压缩解压文件出错解决办法

    您是否遇到过精力了好久下回来的压缩吧,结果在解压过程中出现错误的情况呢?比如说此解压失败或压缩文件文件已经损坏?导致解压文件失败.如果遇到这种问题,那就试试常见的压缩解压文件出错解决办法吧.凡事求人不 ...

  6. linux+shell+解压命令,linux shell 压缩解压命令

    .tar 解包:tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar是打包,不是压缩!) --------------- .gz 解压 ...

  7. java解压zip代码_Java解压zip文件(文本)压缩包

    说明:由于我们的日志收集到指定服务器上,会按天压缩成一个zip格式的压缩包,但是有时候需要对这些日志进行处理,人工解压在处理,显示对于大量的日志处理是不行的(效率太低),所以还是要采用程序自动解压效率 ...

  8. 【Android 安全】DEX 加密 ( Java 工具开发 | 解压 apk 文件 | 加密生成 dex 文件 | 打包未签名 apk 文件 | 文件解压缩相关代码 )

    文章目录 一.解压 apk 文件 二.加密生成 dex 文件 三.打包未签名 apk 文件 四.完整代码示例 五.文件解压缩相关代码 六.执行结果 参考博客 : [Android 安全]DEX 加密 ...

  9. java zip解压 中文_java解压ZIP 解决中文乱码 (GBK和UTF-8)

    java解压ZIP 解决中文乱码 (GBK和UTF-8) 工具使用 : zip4j GitHub : zip4j 版本 : 2.2.8 Maven : net.lingala.zip4j zip4j ...

  10. 惊爆:当Python代码遇到zip解压炸弹,未做防护的你后悔莫及!

    zip解压炸弹 在文章的开头,让我们先来介绍一下zip解压炸弹是个 什么妖怪! 解压炸弹是指解压缩后能够产生巨大的数据量的可疑压缩文件!默认设置是文件扫描中产生500MB以上解压数据的是"解 ...

最新文章

  1. 三张內存变化图揭秘基本类型数组的初始化
  2. 算法练习day3——190320(对数器、归并排序)
  3. 二叉树的建立和遍历算法 - 数据结构和算法47
  4. 一分钟了解Android横竖屏 mdpi hdpi xhdpi xxhdpi xxxhdpi
  5. 在java web工程中jsp页面中使用kindeditor
  6. 交换机开发(二)—— 三层交换机报文转发过程
  7. sql的子查询超级慢-子查询酿的祸
  8. React脚手架学习笔记
  9. rocketmq的有序消费模式和并发消费模式的区别
  10. 条件指示符 #ifndef 的用处
  11. 五边形组合包络图matlab,华中赛基于遗传算法的钢构件排料问题.docx
  12. LitJson扩展基础类型
  13. 串口 单片机 文件_单片机引脚介绍
  14. 学术论文科研写作方法总结--针对深度学习,自然语言处理等领域
  15. mutation和action 区别
  16. 计算机网络知识点总结(第四章 网络层)
  17. MySql数据库中的权限授予
  18. 如何使用excel制图表
  19. 压缩算法:字符串(JSON)压缩和解压【JDK之Deflater压缩与Inflater解压】
  20. 芯片工艺的5nm和7nm是怎么来的?揭开芯片工艺和摩尔定律背后的“秘密”

热门文章

  1. c# 时间戳的使用,日期判定(时间戳获取、 时间戳和DateTime的转换、时差计算)
  2. 互联网进化论在中国科技论文在线正式发表
  3. 如何培养项目管理的领导力?
  4. 如何查看电脑系统版本
  5. 视差贴图(Parallax Mapping)
  6. java 自定义的异常类_java自定义异常类实例讲解
  7. dell r720光盘启动项_Dell R720服务器安装操作系统
  8. 什么是传统企业电商洪水围城下的诺亚方舟
  9. python冒号_python数组冒号取值操作
  10. Ubuntu下载与安装