首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么我在使用java.util.zip.ZipFile打开一个空的ZIP文件时遇到异常?

当您在使用 java.util.zip.ZipFile 打开一个空的 ZIP 文件时遇到异常,可能是因为该类不支持空的 ZIP 文件。在这种情况下,您可以考虑使用其他类或库来处理空的 ZIP 文件。

您可以尝试使用 java.util.zip.ZipOutputStream 类来创建空的 ZIP 文件,并使用 java.util.zip.ZipInputStream 类来读取空的 ZIP 文件。这是一个示例代码,用于创建和读取空的 ZIP 文件:

代码语言:java
复制
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;

public class EmptyZipFileExample {

    public static void main(String[] args) throws IOException {
        createEmptyZipFile("empty.zip");
        readEmptyZipFile("empty.zip");
    }

    public static void createEmptyZipFile(String fileName) throws IOException {
        try (ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(fileName))) {
            // 此处不需要添加任何内容,因为我们要创建一个空的 ZIP 文件
        }
    }

    public static void readEmptyZipFile(String fileName) throws IOException {
        try (ZipInputStream zis = new ZipInputStream(new FileInputStream(fileName))) {
            ZipEntry zipEntry;
            while ((zipEntry = zis.getNextEntry()) != null) {
                System.out.println("Entry: " + zipEntry.getName());
                // 此处不需要执行任何操作,因为 ZIP 文件中没有内容可供读取
            }
        }
    }
}

如果您仍然需要使用 java.util.zip.ZipFile 类来处理空的 ZIP 文件,您可以考虑检查 ZIP 文件的大小,并在文件大小为零时采取适当的措施。例如,您可以创建一个空的 ZIP 文件,或者向用户显示错误消息。

总之,当您在使用 java.util.zip.ZipFile 打开一个空的 ZIP 文件时遇到异常,可能是因为该类不支持空的 ZIP 文件。您可以考虑使用其他类或库来处理空的 ZIP 文件。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Java 异常处理一览 | 进阶篇

try-with-resources 语句 我们在对一些资源进行操作,经常会有固定写法: try 中打开资源 finally 中关闭资源 比如下面这个程序: static String readFirstLineFromFileWithFinallyBlock...它使用 BufferedReader 实例从文件中读取数据,这是一个必须在程序完成后关闭资源。... Java SE 7 之前,对资源操作只能通过上边比较繁琐代码实现,也就是使用 finally 块确保关闭资源。...但 Java SE 7 之后,使用 try-with-resources 语句就可以做到无需 finally 块中显式关闭资源,不管 try 语句是正常完成还是异常阻断,资源都会被自动关闭!...,无论是正常还是异常,当代码块终止,BufferedWriter 和 ZipFile close 方法会依次被调用,从而达到自动关闭资源效果。

30820

【Android 逆向】整体加固脱壳 ( DexClassLoader 加载 dex 流程分析 | DexFile loadDexFile 函数 | 构造函数 | openDexFile 函数 )

这门课原则上与我们课相似 * {@link java.util.zip.ZipFile}。它主要由类装入器使用。 * * 注意,我们不直接打开并读取这里DEX文件。...* @返回 * 新或以前打开文件。 * @抛出异常 * 如果无法打开文件或输出文件。...这会有帮助 * 我们避免应用程序运行时多次映射同一个索引 * 决定多次打开它。实际上,这可能不是 * 这是一个真正问题。...这门课原则上与我们课相似 * {@link java.util.zip.ZipFile}。它主要由类装入器使用。 * * 注意,我们不直接打开并读取这里DEX文件。...这门课原则上与我们课相似 * {@link java.util.zip.ZipFile}。它主要由类装入器使用。 * * 注意,我们不直接打开并读取这里DEX文件

35430

zip文件操作导致JVM crash

测试 2.1 准备测试程序 测试程序很简单,就一个一个main函数,大概流程:     先从参数中读取 获取zip文件时间间隔interval,再从参数中获取zip文件路径。...再通过ZipFile类api来从zip文件中获取文件全路径名。每次获取一个文件sleep interval时间,便于测试。...at com.spiro.test.App.main(App.java:38) 2.5 再次解释 禁用了mmap后,进程没有crash,而是一段时间后抛了异常,然后退出进程。...总结 可以看到jvm crash根源就在开启mmap机制后,zip文件在读取过程中被修改了。 解决方法有两种:     1. 从代码逻辑上控制zip文件操作过程中,不要被其他逻辑修改。    ...jvm启动参数中加入-Dsun.zip.disableMemoryMapping=true 。 但是个人觉得2这种方式指标不治本,问题根源还在于文件资源共享访问要做控制。

1.7K90

【Android 逆向】Dalvik 函数抽取加壳 ③ ( 类加载流程分析 | DexPathList#findClass 函数分析 | DexFile#loadClassBinaryName函数 )

类路径条目可以是以下任一项: * 一个{@code.jar}或{@code.zip}文件,其中包含一个可选 * 顶级{@code classes.dex}文件以及任意资源, * 或者是一个普通...这将在最早列表中找到一个 * 路径元素。如果已找到类但尚未找到 * 已定义,则此方法将在定义中定义它 * 构造此实例使用的上下文。...* * @param要查找名称 * @param查找类遇到抑制异常 * @返回已命名类或{@code null}(如果该类不是) * 在任何dex文件中找到 */...这门课原则上与我们课相似 * {@link java.util.zip.ZipFile}。它主要由类装入器使用。 * * 注意,我们不直接打开并读取这里DEX文件。...* * 如果类 * 找不到,因为每个 * 我们查看一个DEX文件中找不到类时间。

25120

Java上传安卓apk安装包后获取应用名称、包名、版本、图标等信息

一个应用下载(应用市场)程序中,除了应用信息显示、文件下载等功能,最重要就是后台管理应用信息功能, JavaWeb 程序中,可使用以下代码实现安卓安装包文件上传后信息读取功能。...; 9import java.util.zip.ZipFile; 10import org.xmlpull.v1.XmlPullParser; 11import android.content.res.AXmlResourceParser...文件(apk可以当成一个zip文件),注意只能解压zip格式文件,解压.rar文件会出现 java.io.IOException: Negative seek offset 异常 26 *...@param apkUrl apk应用(zip)文件绝对路径 27 * @param logoUrl 图标生成地址 28 * @throws IOException 29...---- 博客即将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?

1.1K30

6步速通:修复损坏word文件

前两天,老师找到我,想让帮忙修复一个打不开docx文档。症状大概是这样: 打开文件时候花了较长时间,并且显示了乱码,并且老师使用WPS自带文档修复功能也无法修复。...遇到这个情况,到底怎么办呢? 第一步:搜索 首先,简单搜索了一下,发现docx其实是个zip格式压缩包,因此,就尝试将这个文件改为zip后缀,想通过压缩软件来打开。...第二步:修复zip Linux系统下,可以使用以下命令来修复zipzip -FF 样本.zip --out ok.zip 然后,就会出现这个提示: 这个提示意思是,问我们这个压缩包是否为“单卷...估计是由于写入文件出错,导致这个图片没有被写入。 打开修复好压缩包,长这个样子: 大概找了找,发现文字都在word文件夹下document.xml里面。...步骤4:创建一个docx 考虑到目前是zip正常工作,但是docx不工作。思路就是,尝试新建一个docx,将其重命名为zip,再把待恢复文件zip包中xml文件复制进去。

32930

一次压缩引发堆外内存过高教训

(好吧其实是运维大佬看容器一直重启,主动要求扩容协助排查,赞一个) 将堆内内存限制7G,堆内使用6G,留给堆外尽可能大空间。...首先打开文件 ? 进入后看到对分析结果中出现三个明显错误,问题一跟问题二是由于引入了arthas导致,直接跳过。 ?...看到ZipFileInflaterInputStream马上想起该压缩在哪使用:push消息预生成后存储redis,批量生成后将消息进行压缩再存储,采用正是zip压缩,代码示例如下: 遗憾是项目中使用压缩工具为...网上部分小伙伴推荐使用snapy代替zip,但是就不~~还是要搞清楚为什么此处没有方法栈弹出之后马上做资源回收。...end()方法调用后即可对堆外使用内存进行释放,而不是等待jvm垃圾回收来临之后,将引用回收再间接使堆外缓冲区回收。

1.5K61

python常用函数技巧汇总

本篇博文旨在记录一些常用操作技巧,以便重复使用时快速查阅,会持续进行更新。 读取txt文件 data = np.genfromtxt('....下面是遇到实际问题场景: 一个list存储文章标题,另一个list存储文章发表时间,根据时间来进行两者同时排序: title_list = ['文章1标题', '文章2'] time_List =...跳过异常继续运行 这个需求是进行爬虫练习遇到,有的网站为了防爬虫,会连续性网站数据中加入某些异常值,导致正常爬虫遇到时会进行报错,从而前功尽弃。...新建一个txt文件,读取原文件每行数据,批量进行添加信息 ff = open(r'D:\Desktop\ailab\task6\pa\submission.txt', 'w') # 打开一个文件,可写模式...with open(r'D:\Desktop\ailab\task6\pa\pa_result.txt', 'r') as f: # 打开一个文件只读模式 line = f.readlines

41320

策划都能看得懂活动系统,从零搭建活动系统

还有就是选择使用Okhttp,选择原因就是不想用httpclient ,就这么简单,任性。...; import java.util.Enumeration; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; /** *...,方便在使用时候调用 3、和客户端通信,玩家登陆时候可以把活动数据发给客户端,这样数据和服务器保持一致,每个活动自己通信就可以了。...客户端可以根据活动时间判断,或者开启活动,或者去除活动icon. 4、代码只是展示了思路,但是还有些细节没有处理,比如异常处理,项目中使用时候可以根据项目的内容进行调整 5、可以将程序中一些路径等等当做配置...,而不是写死代码里 9、总结 知识点: OkHttp 使用,异步下载文件到本地,DownloadUtil 解压zip文件方式,方法,平常比较少用工具类,ZipUtil 读取文件到字符串,Java

1.6K20

从零复刻王者荣耀活动系统,策划都能看得懂活动系统,源码奉送

还有就是选择使用Okhttp,选择原因就是不想用httpclient ,就这么简单,任性。...pv.getBegin() <= nowSec && (pv.getEnd() == 0 || nowSec <= pv.getEnd());   }    /**     * 根据活动类型获得活动信息(限同一刻只能出现一个该类型活动...,方便在使用时候调用 3、和客户端通信,玩家登陆时候可以把活动数据发给客户端,这样数据和服务器保持一致,每个活动自己通信就可以了。...客户端可以根据活动时间判断,或者开启活动,或者去除活动icon. 4、代码只是展示了思路,但是还有些细节没有处理,比如异常处理,项目中使用时候可以根据项目的内容进行调整 5、可以将程序中一些路径等等当做配置...,而不是写死代码里 9、总结 知识点: OkHttp 使用,异步下载文件到本地,DownloadUtil 解压zip文件方式,方法,平常比较少用工具类,ZipUtil 读取文件到字符串,Java

88520

老项目迁移AndroidStudio3.0遇到

2.问题 1.配置了腾讯资源文件压缩插件导致异常 项目indexing后出现一个问题 ?...是:用户/(当前用户目录)/.gradle,解压下载好文件到该目录中,关闭AS,重新打开(未亲测); 3.修改输出apk文件名导致异常 第二条问题解决后,出现了 ?...这一大串异常在编译时候报出,第一次导入项目的时候遇到了,第二次导入其它项目的时候,竟然没有遇到,对比之下得出问题是出在配置了高版本support包问题,当你把项目所有support包版本配置到...希望大家升级AS3.0时候如果遇到和我相同问题,可以做一个参考 ** 下面我们来看一篇经常遇到经典问题: 最近 Android Studio 3.0 版本正式推出,趁着项目刚发完版本,赶紧更新试试水...api : module 编译可用,module 使用者编译和运行时可用,这个和过时 compile 一样

1.3K10

VBA实战技巧32:安装Excel加载宏

Excel是如何管理加载宏列表 在后台,Excel使用注册表和一个特殊文件夹来管理存在哪些加载项以及已安装了哪些加载项。...然后,有两个关于插件文件存储位置检查。如果用户直接打开压缩文件zip文件)下载,然后打开加载项,则xlam文件将存储临时位置(如果安装了解压缩软件),或者位于名称中包含.zip文件夹中。...Excel可以打开此类文件,但无法安装zip文件夹中加载项。并且压缩软件会在关闭后立即删除Temp中文件夹。然后,会在Excel中得到一个指向已安装加载项指针,该加载项没有随附xlam文件。...每次Excel启动,都会弹出一个找不到加载项警告消息框,如下图6所示。 图6 因此,为什么代码会显示一个如下图7所示消息框。...最后一行关闭加载项打开所有工作簿。为什么?因为当没有活动工作簿你无法打开加载项对话框,显然这也会阻止Excel通过VBA将新加载项添加到列表中。

4.5K20

ThinkPHP5.1 + tufanbarisyildirim 解析apk

首先验证文件是否上传了并且是否为。...if (false === ($file instanceof File)) {   //文件,抛异常/业务处理 } 然后就是验证文件类型了,apk媒体信息其实就是zip,千万不要使用后缀名进行判断啊...年轻就是用后缀进行判断。 老司机看到就建议使用getMime方法获取文件媒体进行进行匹配。(getMime属于tp5 File封装方法) if ('application/zip' !...个人使用这个控件遇到点问题,就是应用名称数组,怎么才能知道应用名称对应语言呢?...怎么才能取出简体中文应用名称呢? emmmm,如果各位使用大佬知道的话,可否评论区写下。非常感谢。 最后,感谢各位小伙伴赏脸看我博客。

67640

关于Java解压文件一些坑及经验分享(MALFORMED异常)

关于Java解压文件一些坑及经验分享 就在本周, 测试人员找到我说现上需求文档(zip格式)无法预览了, 让帮忙看看怎么回事。...异常大致是这样,前台无法预览需求文档原因是该zip文件解压失败了。 首先网上查了下这个异常原因, 都说是因为编码问题, 要求将UTF-8改成GBK就可以了。...zip; } } return zip; } 于是便将线上zip文件down下来 然后本地调试下, 发现在第9行中抛出了异常, 如下代码: ZipEntry entry...将线上zip文件解压后, 自己电脑重新打个包(是好压), 然后又运行了上述代码, 竟然解压成功?? 这是为什么?...又是一通找, 终于: Apache commons-compress 解压 zip 文件是件很幸福事,可以解决 zip 包中文件名有中文跨平台乱码问题,不管文件 Windows 压缩还是

28.4K170

搞懂这10 行代码,究竟有多难?

本文为第321篇原创 愿竭尽所能,为你带些温暖 1初衷 文章 Python要点总结,使用了100个小例子!...发出后,有几个朋友问我itertools 函数实现不太理解,问我是否能添加详细注释,以解惑。今天拿出2个多小时总结一个函数,一共10几行代码,并添加详细注释,希望能帮助到更多人!...try… except是异常捕获标准模板,next(it)第一次执行返回it一个元素,a=[1,2,3],所以value值为1. (10)计数 num_active表示当前存活列表个数,一旦一个列表迭代到终点...此处,repeat返回一个无限次重复fillvalue值迭代器,并赋值给此时触发StopIteration异常列表。此处就是iter(a),令其指向repeat创建迭代器。...,下一行代码`values=[]` #同时组成zip_longest终止条件,只有当*args中所有参数都扫描一遍后, #zip任务才结束。

54920

Python黑客编程2 入门demo--zip暴力破解

2.1 准备基本材料 /home/ziptest/目录下,创建了两个文件一个test.zip,是一个设置了密码zip包,密码为456789。 ?...2.2 ZIPFILE python中操作zip文件,最简单方式就是使用zipfile模块,使用该模块可以用来判断一个文件是否是压缩文件,创建、解压文件,获取zip文件元数据信息。...我们想要操作一个zip文件,第一步就是初始化ZipFile实例。下面我们打开我们准备好text.zip文件。...2.3 读取字典文件 Python中打开文件使用open方法,这是一个内置方法,查看open帮助文档,可以看到该方法参数说明。 ?...之后程序运行时候通过parse_args方法获取输入参数,如果参数为,则打印使用方法,退出程序。 下面使用终端来测试这个程序。 无参数情况下: ? 输入参数: ?

1.9K70
领券