0

複数の埋め込まれたzipファイルとディレクトリ内のファイルにアクセスする必要があるJavaプロジェクトに取り組んでいます。

たとえば、archive1.zip / archive1 / archive2.zip / archive2 / directory1/file_that_I_need.txtです。

各zipファイルが抽出されたときに、その内容がすぐに一覧表示されると、はるかに簡単になりますが、代わりに、すべての内容を含むフォルダーが内部にあります。

私がオンラインで見つけた例は、抽出されたときにアクセスする必要のあるファイルを含むzipファイルを扱っていますが、zipファイル内のディレクトリ内のファイルへのアクセスを扱っているものは見つかりません。これに関するアドバイスは素晴らしいでしょう。

ありがとう!

4

2 に答える 2

1

新しいファイルの作成が禁止されているため、 ZipInputStreamにかなりこだわっています。埋め込みアーカイブに対応するが見つかったらZipEntry、そのストリームを読み取って実際のファイルを見つけます。必要な数のレベルのアーカイブを再帰的に処理できます。

単一のファイルを処理する場合は、これで問題ありません。ただし、複数のファイルのアーカイブを再度読み取ると、コストがかかる可能性があります。より良い解決策は、少なくとも外側のアーカイブを実際のファイルをメモリマップするZipFileとして開くことです。

次に、含まれているアーカイブを一時ディレクトリに抽出し、同様に開くことができれば、ZipFileおそらく速度が大幅に向上します (各埋め込みアーカイブから複数のファイルをプルしている限り)。

于 2012-08-02T16:53:13.910 に答える
0

http://truezip.java.net/も参照してください 。以前のバージョンを使用しましたが、Java に組み込まれているサポートよりもかなり強力です。ネストされたアーカイブ構造内からファイルを読み取るための Apache Commons ライブラリもあると思います。

于 2012-08-02T16:55:36.913 に答える