2012-03-12 79 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