2

私は現在、ネストされたzip内のファイルを探すための関数を構築しようとしています。私が処理できる一般的な問題であり、コードは正しく機能しています。私が抱えている問題は、圧縮形式に関連しています。

デフォルトのzipファイルは問題ではありません。zipinputstreamを開いて検索機能に送信し、各エントリがzipファイルであるかどうかを確認し、そうである場合は、inputstreamを別のzipinputstreamでラップして再帰します。非標準のzip圧縮を使用している場合に問題が発生します。

この関数をもっと堅牢にしたいと思います。zipエントリの圧縮形式を検出し、それを正しいデフレータでラップしてから、それをzipinputstreamでラップして、再帰できるようにします。問題は、圧縮設定をデコードする方法がわからないことです。また、他のzip圧縮形式の処理方法もわかりません。

この機能をより柔軟にする方法についてのアドバイスがあれば役立ちます。これを自分の個人図書館に統合するつもりなので、今後はいろいろな方向からこの機能を利用していきます。

4

1 に答える 1

2

私の知る限り、java.util.zip でサポートされている圧縮アルゴリズムは標準のものだけです。ただし、 ZipEntry getMehod()を使用して圧縮アルゴリズムを検出できます。

他の圧縮アルゴリズムのサポートを追加するには、別のアルゴリズムをサポートするライブラリが見つからない限り、一部の作業が必要になる場合があります。たとえば、 7zip の LZMA フォーマット用のライブラリがありますが、これらのクラスは Decoder または ZipEntry を拡張しません。代替手段を提供するだけです。ネストされた zip ファイルを非圧縮で抽出し、別のものを使用して解凍する必要があります。これはおそらくあなたが望むほどきれいではありません。

于 2012-06-17T13:21:34.933 に答える