我目前正在尝试构建一个函数来查找嵌套zip中的文件。 我可以处理的一般问题,并且我的代码可以正常工作。 我遇到的问题与压缩格式有关。
默认的zip文件不是问题,我打开我的zipinputstream,将其发送到我的搜索功能,检查每个条目是否是zip文件,如果是,我将输入流包装在另一个zipinputstream中并递归。 当我有一个非标准的zip压缩时,问题就来了。
我想使这个函数更加健壮:能够检测 zip 条目的压缩格式,将其包装在正确的 deflater 中,然后将其包装在 zipinput 流中,以便我可以递归。 问题是我不知道如何解码压缩设置。 我也不知道如何处理其他zip压缩格式。
关于如何使此功能更加灵活的任何建议都将有所帮助。 我打算将其集成到我自己的个人库中,因此将来将从各个方向使用此功能。
据我所知,java.util.zip支持的唯一压缩算法是标准算法。 但是您可以使用 ZipEntry getMehod() 检测压缩算法。
添加对其他压缩算法的支持可能需要您做一些工作 - 除非您能找到支持不同算法的库。 例如,有一个用于7zip的LZMA格式的库,但这些类没有扩展Decoder或ZipEntry-它们只是提供了一种替代方案。 您需要提取未压缩的嵌套 zip 文件,然后使用其他内容将其解压缩。 这可能没有您想要的那么干净。