我正在尝试使用 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 文件的第三方解压缩库吗?
根据维基百科上的Zip页面,ZIP格式规范2.1版添加了对
Deflate64
压缩的支持:
2.1:(1996)Deflate64 压缩
Apache Commons 压缩存在未解决的功能请求。
目前,据我所知,唯一支持此功能的库是net.sf.sevenzipjbinding,但它只是 7-Zip 的包装器。
Apache Commons Compress 的功能请求现已解决,您可以使用它。
相关问题:Java压缩库支持Deflate64
Apache Commons 压缩器可以处理 Deflate64 文件类型的解压缩。
需要在POM.xml中添加依赖。
使用类 ZipArchiveInputStream 并将 zip 文件路径作为参数传递。
ZipArchiveInputSteam ZipArchiveInputSteam = new ZipArchiveInputSteam(new FileInputStream(yourZipPath));
ZipArchiveEntry entry; while((entry = zipInput.getNextZipEntry()) != null){
//在这里添加条件来检查目录,然后用户 FileOutputStream 方法 write(buffer,0,bytesRead) 将数据写入目标路径。