gpt4 book ai didi

java - 是否可以从流中打开 TrueZIP 存档?

转载 作者:行者123 更新时间:2023-12-01 05:20:18 28 4
gpt4 key购买 nike

使用 TrueZIP,有没有办法从流中打开和修改现有的 ZIP 文件(当然可以使用另一个流输出)?

我有修改 ZIP 的代码,只要我处理文件系统上现有的真实 ZIP 文件,该代码就可以完美运行,但我要求所有临时文件在存储在磁盘上时都需要加密。在我们的应用程序的大部分中,这很容易实现(使用 CipherOutputStream 和 CipherInputStream),但我有一个函数使用 TrueZIP 来更新现有的 ZIP 文件。如果文件被加密,这部分显然会失败。

ZIP 文件将由不支持加密的专有应用程序使用,因此无法使用 ZIP 规范中的加密。

我们使用 TrueZIP 的原因是我们需要对 Zip64 的支持(我知道它包含在 Java 7 中,但我们现在无法切换)。

最佳答案

不可以,存档文件必须存储在可访问的文件系统中才能与 TrueZIP 一起使用。但您还有许多其他选择:

  • TrueZIP 使用 IOPoolService 接口(interface)的实例来管理临时文件。您可以提供自己的实现来加密所有临时文件,甚至可能只是将它们存储在堆上(如果它们很小)。查看 TrueZIP 驱动程序文件以了解引用实现。

  • 您可以使用 ParanoidZipRaesDriver 来使用 RAES 加密的 ZIP 文件。该驱动程序通过将写入存档文件的并发线程数限制为 1 来确保不使用未加密的临时文件。

  • 您可以使用带有 FsOutputOption.ENCRYPT 的标准 ZIP 驱动程序来打开 WinZip AES 加密。为了确保不使用未加密的临时文件,您可以像 ParanoidZipRaesDriver 一样重写 ZipDriver.newOutputSocket 方法。

关于java - 是否可以从流中打开 TrueZIP 存档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10498270/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com