无法解压缩使用Windows创建的文件";“发送到压缩文件夹”;在scala/java中
通过在windows资源管理器中选择IIS日志文件,然后使用Send To->Compressed zipped文件夹,我在windows 2008 r2虚拟机上压缩了一堆IIS日志文件 我使用java.util.ZipFile、zip4j和ApacheCommons压缩库在scala中编写了不同的程序 zip4j返回:无法解压缩使用Windows创建的文件";“发送到压缩文件夹”;在scala/java中,java,unzip,zip4j,Java,Unzip,Zip4j,通过在windows资源管理器中选择IIS日志文件,然后使用Send To->Compressed zipped文件夹,我在windows 2008 r2虚拟机上压缩了一堆IIS日志文件 我使用java.util.ZipFile、zip4j和ApacheCommons压缩库在scala中编写了不同的程序 zip4j返回:线程“main”net.lingala.zip4j.Exception.zipeexception中的异常:未知的压缩方法 commons compress返回:org.apac
线程“main”net.lingala.zip4j.Exception.zipeexception中的异常:未知的压缩方法
commons compress返回:org.apache.commons.compress.compressors.Compressor异常:未找到流签名的压缩器。
java.util.Zip返回:java.util.Zip.ZipException:无效的压缩方法
这些zip文件有什么特别之处,以至于没有一个方法可以解压它们
如何使用JVM库解压它们
例如,我使用了以下代码:解压一个文件,它返回了无效压缩方法
异常
这些是归档文件中的前16个字节:
根据标题信息(来自您文章中的16个字节),zip文件中的此条目是使用Deflate64加密的。不要将放气64与放气压缩混淆。Deflate64是PKWare的商标(PKWare是zip格式的维护者),是Deflate压缩算法的增强版。根据超级用户和github上的数据,如果文件大小大于2GB,Windows将使用Deflate64。zip4j和jdk的zip实用程序还不支持Deflate64,但commons compress 1.16版支持Deflate64。您可能可以尝试使用最新版本的commons compress解压您的zip文件
编辑:或者,如果您有选择,您可以尝试使用其他工具(7zip、zip4j等)创建zip文件。然后,您就不必处理Deflate64,这使您的zip文件与其他工具兼容。7-zip可以打开zip文件吗?是的,7-zip可以打开文件。我发布了一个屏幕截图,其中headerZIP中的字节支持多种压缩方法,而Windows中使用的压缩方法可能是Java运行时不支持的一种罕见方法(请参阅)。使用7-zip调查您的zip文件,以确定是否存在这种情况。确实,zip文件包含多个日志文件,解压后的日志文件总数约为16gb。每个文件的大小在100到300 mb之间。归档文件大约有1.2GB。好吧,老实说,我简直不敢相信JDK没有涵盖这一点,而且它是开箱即用的。从白盒的角度来看,在java.util.zip上,我不应该关心它是Deflate64还是Deflate,而只是简单地使用API。