2012-03-12 15 views
4

別のzipファイルの中にzipファイル(「inside.zip」と言うことがあります)があります(「outside.zip」としましょう)。私はApache's common-vfs2 Java libraryを使用しており、zip:file:///path/to/outside.zipのようなuriを提供してzipファイルを開きます。ただし、外部にあるzipファイルを開くことはできません。そのファイルはフォルダではなく、zip:file:///path/to/outside.zip!/inside.zipには子を見つけることができません。私は正しいzipファイルの中にzipファイルを開くことができるようにライブラリ(私は正しいuriを探しています)を使用するための最良の方法は何ですか?Apacheの一般的な-vfsのネストされたzipファイルのURI?

答えて

6

これを考え出す、一日過ごした後、これが正しいURIである: zip:zip:/path/to/outer.zip!/inner.zip!/

以下のすべてが驚くほど失敗:

  • zip:zip:/path/to/outer.zip!/inner.zip
  • zip:zip:/path/to/outer.zip!/inner.zip!
  • zip:/path/to/outer.zip!/inner.zip!/

このような厄介なバグを避けるために私が検索できるRFCまたは標準の文法はありますか?

+0

途中で失敗したケース( 'zip:zip:/path/to/outer.zip!/inner.zip!' - 後ろに感嘆符が付きますが、後ろにスラッシュはありません)が私のために働いていました。 [documentation](http://commons.apache.org/proper/commons-vfs/filesystems.html#Zip_Jar_and_Tar)の 'jar:zip:outer.zip!/nested.jar!/ somedir'サンプルも同様に動作しました。しかし、外側のzip(すなわち 'zip:/ path/to/outer.zip')の内側の内容をリストするために感嘆符を付ける必要がないことを考えると、直観に反して2番目の感嘆符を付ける必要がありますネストされたジップの内部コンテンツをリストします。 – kostmo

+0

また、外側のzipの内側の内容を感嘆符を付けて表示します(つまり、 'zip:/path/to/outer.zip!')。だから、クライアントとして、おそらく最も一貫していることは、それが暗黙のように見える最も外側のzipレベルでさえ常に感嘆符を付けることです。 – kostmo

関連する問題