【发布时间】:2011-05-28 18:23:53
【问题描述】:
我有一个加密的 ODT(打开文档文本)文件,我需要解压缩它。 ODT 是一个 ZIP 文件。加密的 ODT 是一个普通的 ZIP 文件,只是 ZIP 中的一些文件被加密了。
在测试中使用 ZipFile 可以正常工作,但我不能真正使用 ZipFile,因为我在内存中有一个流,我不想使用文件。
因此我使用 ZipInputStream。但是使用 ZipInputStream.getNextEntry() 会引发可怕的 只有 DEFLATED 条目可以有 EXT 描述符 例外。
据我了解,它会抛出 ZIP 包内的第一个加密文件,例如 content.xml。因为 OpenOffice 已经加密了 xml 文件,所以压缩它可能没有意义,它被存储在未压缩的 ZIP 包中。
但 ZipInputStream 似乎有问题,我没有办法解决。
是的,加密的 ODT 文件是由 OpenOffice Writer 3.2.1 创建的。是的,现有的 ZipInputStream 甚至无法枚举其中的条目。
你有什么建议吗?
【问题讨论】:
-
您是否尝试了解 ZipFile 的工作原理并模仿此代码?
-
ZipFile 非常快速地调用本机代码来处理文件。不幸的是,我需要在内存流中拥有它。