我目前正在尝试构建一个函数来搜索嵌套 zip 中的文件。我可以处理一般问题,并且我的代码可以正常工作。我遇到的问题与压缩格式有关。
默认的 zip 文件不是问题,我打开 zipinputstream,将其发送到我的搜索函数,检查每个条目是否是 zip 文件,如果是,我将输入流包装在另一个 zipinputstream 中并递归。当我使用非标准 zip 压缩时就会出现问题。
我想让这个函数更加强大:能够检测 zip 条目的压缩格式,将其包装在正确的压缩器中,然后将其包装在 zipinputstream 中,以便我可以递归。问题是我不知道如何解码压缩设置。我也不知道如何处理其他 zip 压缩格式。
任何有关如何使此功能更加灵活的建议都会有所帮助。我打算将其集成到我自己的个人库中,以便将来从各个方向使用此功能。
最佳答案
据我所知,java.util.zip 支持的唯一压缩算法是标准算法。但您可以使用 the ZipEntry getMehod() 检测压缩算法.
添加对其他压缩算法的支持可能需要您做一些工作 - 除非您可以找到支持不同算法的库。例如,有一个library for 7zip's LZMA format ,但这些类不扩展 Decoder 或 ZipEntry - 它们只是提供替代方案。您需要解压缩未压缩的嵌套 zip 文件,然后使用其他工具对其进行解压缩。这可能不像您想要的那么干净。
关于java - (JAVA) 处理 zipstream 中的不同压缩类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11071250/