1

TrueZIP を使用して、ストリームから既存の ZIP ファイルを開いて変更する方法はありますか (もちろん、別のストリームを使用して出力される可能性があります)。

ファイル システム上の既存の実際の ZIP ファイルで作業する限り、完全に機能する ZIP を変更するためのコードがありますが、ディスクに保存されている間はすべての一時ファイルを暗号化する必要があるという要件があります。私たちのアプリケーションの大部分では、これは (CipherOutputStream と CipherInputStream を使用して) 簡単に実現できますが、TrueZIP を使用して既存の ZIP ファイルを更新する関数が 1 つあります。ファイルが暗号化されている場合、この部分は明らかに失敗します。

ZIP ファイルは、暗号化をサポートしない独自のアプリケーションによって消費されるため、ZIP 仕様の一部である暗号化を使用することはできません。

TrueZIP を使用している理由は、Zip64 のサポートが必要だからです (Java 7 に含まれていることはわかっていますが、今すぐ切り替えることはできません)。

4

1 に答える 1

0

いいえ、TrueZIP で使用するには、アーカイブ ファイルをアクセス可能なファイル システムに保存する必要があります。ただし、他にもいくつかのオプションがあります。

  • TrueZIP は、IOPoolService インターフェイスのインスタンスを使用して一時ファイルを管理します。すべての一時ファイルを暗号化する独自の実装を提供するか、ヒープに保存するだけです (ファイルが小さい場合)。TrueZIP Driver FILE を参照して、リファレンス実装を確認してください。

  • ParanoidZipRaesDriver を使用して、RAES で暗号化された ZIP ファイルを使用できます。このドライバーは、アーカイブ ファイルを書き込むための同時スレッド数を 1 つに制限することで、暗号化されていない一時ファイルが使用されないようにします。

  • FsOutputOption.ENCRYPT で標準の ZIP ドライバーを使用して、WinZip AES 暗号化をオンにすることができます。暗号化されていない一時ファイルが使用されないようにするために、ParanoidZipRaesDriver と同じように ZipDriver.newOutputSocket メソッドをオーバーライドできます。

于 2012-05-09T12:17:52.653 に答える