2

ZIP アーカイブを読み取るために必要なアルゴリズムを実装する Java ライブラリはありますか? I/O?

そのようなフィールドの定義については、必要に応じてZIP 仕様を参照してください。

中央ディレクトリの最後から読み取る理由は、自己解凍ファイル (例についてはWinzip Self Extractorを参照)などのファイルを正しく解凍できるようにするためです。これらのファイルには、既存のバイト シーケンスを含む可能性がある実際の ZIP コンテンツの前にデータがあります。 ZIP ヘッダーの署名。

「I/O を行わずに」とは、ZIP コンテンツがバイトの配列として存在し、ディスクやネットワーク アクセスを使用して解凍しないことを意味します。

4

2 に答える 2

2

a を使用しByteArrayInputStreamて、ファイルからのようにバイト配列を読み取ることができます。

byte[] zipData = . . .
ZipInputStream zis = new ZipInputStream(new ByteArrayInputStream(zipData));

編集

標準ZipFile実装はネイティブ コードを使用するため、ByteArrayInputStream. ただし、 の純粋な Java 実装の 1 つを適応させることができる場合がありますZipFile。開始する場所の 1 つは、Android の実装です。を使用するため、完全に機能するわけではありませんRandomAccessFileただし、このスレッドのアイデアをメモリ内バージョンの に使用RandomAccessFileすると、必要なものすべてをつなぎ合わせることができる場合があります。

于 2012-10-03T00:03:34.513 に答える
0

当社の SecureBlackbox には、インメモリ ストリームで動作するZIP コンポーネントが含まれています。これはまさにあなたが探しているものだと思います。

于 2012-10-03T06:35:17.153 に答える