我在 PHP 中使用 ZipArchive 来创建存档。它在一年的大部分时间里一直运行良好,但今天突然没有明显的触发它停止正常工作。
存档似乎已成功创建,大小合适,并且没有给出任何错误或警告。使用$ unzip archive.zip
它似乎有效。但是,在我们的 Java 应用程序(已经运行了大约一年)中提取它失败了:
java.io.EOFException: Unexpected end of ZLIB input stream
at java.util.zip.InflaterInputStream.fill(InflaterInputStream.java:240)
at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:158)
at java.util.zip.ZipInputStream.read(ZipInputStream.java:163)
同样在存档的创建过程中,ZipArchive::close() 大约需要 10 秒,而之前它是即时的。
编辑存档的大小恰好比平时大(28MB 而不是通常 ~15MB),这可能解释了 ZipArchive::close() 的延迟,但不是为什么 Java 不能解压缩它?