ZipInputStream 与我的 zip 文件不兼容 - 无效的 CEN 标头(错误的压缩方法)

问题描述 投票:0回答:2

我正在尝试使用 java“1.8.0_92”(我的操作系统支持的最新版本)在 java 中读取 zip 文件。

不幸的是,我遇到了例外:

invalid CEN header (bad compression method)

当我使用 *nix(实际上是 OS X)

file
命令来分析文件时,我得到了详细信息:

Zip archive data, at least v2.1 to extract

我可以使用能够读取此版本 zip 文件的第三方解压缩库吗?

java zip
2个回答
1
投票

根据维基百科上的Zip页面,ZIP格式规范2.1版添加了对

Deflate64
压缩的支持:

2.1:(1996)Deflate64 压缩

Apache Commons 压缩存在未解决的功能请求。 目前,据我所知,唯一支持此功能的库是net.sf.sevenzipjbinding,但它只是 7-Zip 的包装器。 Apache Commons Compress 的功能请求现已解决,您可以使用它。

相关问题:Java压缩库支持Deflate64


0
投票

Apache Commons 压缩器可以处理 Deflate64 文件类型的解压缩。

需要在POM.xml中添加依赖。

  • GroupId:org.apache.commons
  • artifactId:commons-compress
  • 版本:1.21

使用类 ZipArchiveInputStream 并将 zip 文件路径作为参数传递。

ZipArchiveInputSteam ZipArchiveInputSteam = new ZipArchiveInputSteam(new FileInputStream(yourZipPath));

ZipArchiveEntry entry;  while((entry = zipInput.getNextZipEntry()) != null){
//在这里添加条件来检查目录,然后用户 FileOutputStream 方法 write(buffer,0,bytesRead) 将数据写入目标路径。

© www.soinside.com 2019 - 2024. All rights reserved.