2

我目前正在尝试构建一个用于在嵌套 zip 中查找文件的功能。我可以处理的一般问题,并且我的代码可以正常工作。我遇到的问题与压缩格式有关。

默认 zip 文件不是问题,我打开我的 zipinputstream,将其发送到我的搜索功能,检查每个条目是否是 zip 文件,如果是,我将输入流包装在另一个 zipinputstream 中并递归。当我有一个非标准的 zip 压缩时,问题就来了。

我想让这个函数更加健壮:能够检测 zip 条目的压缩格式,将其包装在正确的 deflater 中,然后将其包装在 zipinputstream 中,以便我可以递归。问题是我不知道如何解码压缩设置。我也不知道如何处理其他 zip 压缩格式。

有关如何使此功能更灵活的任何建议都会有所帮助。我打算将其集成到我自己的个人库中,以便将来从各个方向使用此功能。

4

1 回答 1

2

据我所知,java.util.zip 支持的唯一压缩算法是标准压缩算法。但是您可以使用ZipEntry getMehod()检测压缩算法。

添加对其他压缩算法的支持可能需要您做一些工作 - 除非您可以找到支持不同算法的库。例如,有一个 用于 7zip 的 LZMA 格式的库,但这些类没有扩展 Decoder 或 ZipEntry - 它们只是提供了一个替代方案。您需要解压缩嵌套的 zip 文件,然后使用其他东西解压缩它。这可能不像您想要的那样干净。

于 2012-06-17T13:21:34.933 回答