2012-05-08 12 views
1

TrueZIPを使用すると、ストリームから既存のZIPファイルを開いて変更する方法はありますか(もちろん別のストリームを使用して出力することはできますか)。ストリームからTrueZIPアーカイブを開くことはできますか?

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

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

私たちがTrueZIPを使用している理由は、私が知っているのはZip64(Java 7には含まれていますが、現在は切り替えられません)のサポートが必要なことです。

答えて

0

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

  • TrueZIPは、IOPoolServiceインターフェイスのインスタンスを使用して一時ファイルを管理します。すべてのテンポラリファイルを暗号化したり、ヒープに格納するだけの独自の実装を提供することもできます(小さければ)。 TrueZIP Driver FILEを参照してリファレンス実装を確認してください。

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

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

+0

ありがとうございました。 –

関連する問題