java - (JAVA) 处理 zipstream 中的不同压缩类型

标签 java stream compression zip

我目前正在尝试构建一个函数来搜索嵌套 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/

相关文章:

java - 平板扫描仪中的 ADF

java - 如何将 ArrayList<MyClass> 重构为 MyClassLIst?

java - 从二进制数据中提取特定位

java - Instant.readObject 方法 "Defend[s] against malicious streams"是什么意思?

algorithm - 实现动态位域

java - Red5:创建视频流的服务器端缩略图?

c# - 从字节数组或流中获取文件名

javascript - WebRTC:如何在 Firefox 中检测流或轨道何时从 PeerConnection 中删除?

python - 如何从列表中的项目中删除标点符号并将其另存为列表中的单独项目?

android - 使用 quality=100 压缩的位图文件大小比原始文件大