java代码-zip解压不可预料的压缩文件末端一级压缩包中的文件为0kb以及目录创建流会报错
这几种错一般都是未关闭或者流的关闭顺序不对,可以使用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以及目录创建流会报错相关推荐
- java代码实现解压文件_Java压缩/解压文件的实现代码
用java压缩/解压文件: import java.io.*; import java.awt.*; import java.awt.event.*; import java.util.*; impo ...
- Java代码实现解压文件包和压缩文件的工具类
最近开发任务比较多,这两天陆陆续续整理了一点资料上传一下,这个是前段时间用到的解压和压缩文件的工具类,网上找了一些,自己补充一下,现在先分享一下,希望对各位同学有所帮助! package com.as ...
- 安卓zip解压软件_手机压缩软件ZArchiver下载、使用教程丨免费、中文,支持7z、zip、rar等所有格式...
点击上方云中栖居关注 ▲ 图片丨Google Play应用商店中的ZArchiver免费版.ZArchiver Donate捐赠版(Pro专业版)图标,两个版本功能基本上一样. ZArchiver自称 ...
- 安卓zip解压软件_[Android]压缩解压工具ZArchiver Pro高级直装版
[简介]:ZArchiver Pro是一款安卓平台的压缩解压工具,能够在手机端解压常见的rar,zip,7z等压缩文件,本版为Pro高级直装版本,解锁高级功能,支持压缩包注释查看.支持中文文件名,(这 ...
- android zip解压出错,常见的压缩解压文件出错解决办法
您是否遇到过精力了好久下回来的压缩吧,结果在解压过程中出现错误的情况呢?比如说此解压失败或压缩文件文件已经损坏?导致解压文件失败.如果遇到这种问题,那就试试常见的压缩解压文件出错解决办法吧.凡事求人不 ...
- linux+shell+解压命令,linux shell 压缩解压命令
.tar 解包:tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar是打包,不是压缩!) --------------- .gz 解压 ...
- java解压zip代码_Java解压zip文件(文本)压缩包
说明:由于我们的日志收集到指定服务器上,会按天压缩成一个zip格式的压缩包,但是有时候需要对这些日志进行处理,人工解压在处理,显示对于大量的日志处理是不行的(效率太低),所以还是要采用程序自动解压效率 ...
- 【Android 安全】DEX 加密 ( Java 工具开发 | 解压 apk 文件 | 加密生成 dex 文件 | 打包未签名 apk 文件 | 文件解压缩相关代码 )
文章目录 一.解压 apk 文件 二.加密生成 dex 文件 三.打包未签名 apk 文件 四.完整代码示例 五.文件解压缩相关代码 六.执行结果 参考博客 : [Android 安全]DEX 加密 ...
- java zip解压 中文_java解压ZIP 解决中文乱码 (GBK和UTF-8)
java解压ZIP 解决中文乱码 (GBK和UTF-8) 工具使用 : zip4j GitHub : zip4j 版本 : 2.2.8 Maven : net.lingala.zip4j zip4j ...
- 惊爆:当Python代码遇到zip解压炸弹,未做防护的你后悔莫及!
zip解压炸弹 在文章的开头,让我们先来介绍一下zip解压炸弹是个 什么妖怪! 解压炸弹是指解压缩后能够产生巨大的数据量的可疑压缩文件!默认设置是文件扫描中产生500MB以上解压数据的是"解 ...
最新文章
- 三张內存变化图揭秘基本类型数组的初始化
- 算法练习day3——190320(对数器、归并排序)
- 二叉树的建立和遍历算法 - 数据结构和算法47
- 一分钟了解Android横竖屏 mdpi hdpi xhdpi xxhdpi xxxhdpi
- 在java web工程中jsp页面中使用kindeditor
- 交换机开发(二)—— 三层交换机报文转发过程
- sql的子查询超级慢-子查询酿的祸
- React脚手架学习笔记
- rocketmq的有序消费模式和并发消费模式的区别
- 条件指示符 #ifndef 的用处
- 五边形组合包络图matlab,华中赛基于遗传算法的钢构件排料问题.docx
- LitJson扩展基础类型
- 串口 单片机 文件_单片机引脚介绍
- 学术论文科研写作方法总结--针对深度学习,自然语言处理等领域
- mutation和action 区别
- 计算机网络知识点总结(第四章 网络层)
- MySql数据库中的权限授予
- 如何使用excel制图表
- 压缩算法:字符串(JSON)压缩和解压【JDK之Deflater压缩与Inflater解压】
- 芯片工艺的5nm和7nm是怎么来的?揭开芯片工艺和摩尔定律背后的“秘密”