zip文件包含zip中每个文件的标题,称为中央目录:https://en.wikipedia.org/wiki/Zip_(file_format)#Central_directory_file_header
但是,这并未定义包含一个文件的zip是否为“foo / bar / baz.txt”只能有一个条目,或文件夹是否也有条目?我在APPNOTE
中找不到答案答案将有助于确定某些Java API中zip压缩条目处理的哪些实现是正确的。例如。如何正确确定zip子文件夹中的所有1级深度条目。
Set<String> getResourcePaths(String path) {
//???
}
getResourcePaths("/foo") -> ["/foo/bar"]
根据zip规范允许哪些或者通过各种压缩,解压缩和(子)条目列表工具最常接受?
答
foo/
foo/bar/
foo/bar/baz.txt
B:
foo/
foo/bar/baz.txt
C:
foo/bar/baz.txt
最初的问题是java jar不包含 some (在本例中为选项B)目录条目,但是代码列出了假设这些条目存在的zip条目,因此最终导致资源不存在找到。