2012-03-12 20 views
4

我有一個zip文件(讓我們說'inside.zip')在另一個zip文件(讓我們說'outside.zip')。我正在使用Apache's common-vfs2 Java library並提供像zip:file:///path/to/outside.zip這樣的URI來打開zip文件。但是,它無法打開outside.zip中的壓縮文件,例如它說它的文件不是文件夾,並且在zip:file:///path/to/outside.zip!/inside.zip中找不到任何兒童。什麼是使用庫的最佳方式(我正在尋找合適的uri),所以我可以在另一個zip文件中打開zip文件?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'),那麼您必須在第二個感嘆號後加上第二個感嘆號列出任何嵌套拉鍊的內部內容。 – kostmo 2013-12-25 01:04:19

+0

它還可以用附加的感嘆號列出外部郵政編碼的內容(即'zip:/path/to/outer.zip!')。所以作爲一個客戶,或許最一致的做法是總是附加感嘆號,即使在最隱含的最外層郵編級別。 – kostmo 2013-12-25 01:11:16