使用zip4j读取分卷ZIP文件时抛出ZipException异常
关于zip4j支持7zip创建的分卷ZIP文件的问题解答
核心结论
zip4j 2.11.5支持PKZIP标准的分卷ZIP文件,但不支持7zip默认创建的非PKZIP格式分卷文件,这是你触发异常的根本原因。
报错原因分析
你通过7zip生成的10MB分卷ZIP,大概率是7zip专属的分卷格式(而非PKZIP标准),这类文件的头部结构不符合zip4j的识别逻辑,因此调用isSplitArchive()时会抛出「Zip headers not found. Probably not a zip file」异常。
PKZIP标准分卷的典型特征是:最后一个分卷文件通常以.zip或.z结尾(比如test.zip.001对应收尾文件test.zip),而7zip创建的ZIP分卷往往没有这类收尾文件,或内部头部标识与PKZIP标准不符。
解决方案
- 重新生成兼容分卷:使用7zip压缩时,选择「ZIP」格式,在分卷设置中明确选择PKZIP兼容的分卷模式(部分7zip版本需避免勾选“自提取分卷”,确保生成标准PKZIP分卷)。生成后可通过Windows自带解压工具验证,能正常解压则格式合规,此时zip4j可正常识别。
- 换用适配工具:若无法重新生成分卷,可考虑使用SevenZipJBinding这类专门适配7zip格式的Java库处理该分卷文件。
- 验证文件格式:尝试用系统自带ZIP解压工具打开分卷,若报错则说明确实是非PKZIP格式,需重新生成。
代码说明
你的代码本身无逻辑问题,只要使用标准PKZIP分卷文件,调用splitZip1.isSplitArchive()会返回true,可正常执行后续操作。
内容的提问来源于stack exchange,提问作者Diliban B
相关产品推荐
相关产品推荐

