我正在查看.zip文件以确认所有包含的文件都已正确命名,并遇到麻烦。这是文件层次结构:
-.zip
-dir
-file1
-file2
-file3
-file4
-file5
-file6
代码:
for (Enumeration<? extends ZipEntry> e = zf.entries(); e.hasMoreElements(); ) {
ZipEntry entry = e.nextElement();
System.out.println("ZipEntry name: " + entry.getName());
...
}
常用输出:
ZipEntry name: dir/file1
ZipEntry name: dir/file2
ZipEntry name: dir/file3
ZipEntry name: file4
ZipEntry name: file5
ZipEntry name: file6
所需的输出还包含
ZipEntry name: dir/
奇怪的是,我有一个测试用例,我得到了所需的输出:当使用通过电子邮件发送给我的相同层次结构的.zip时。每当我使用我在机器上压缩的.zips时,我都会得到&#34; Usual输出。&#34;我真的很想拥有一致的行为,但我无法弄清楚出了什么问题。有什么想法吗?
提前致谢!
答案 0 :(得分:4)
zip文件中没有真正的目录。有条目。并且ZipEntry#isDirectory()
检查条目的名称是否以/
结尾,以确定它是否应被视为目录。那么你的zip文件包含的是
dir/file1
dir/file2
dir/file3
file4
file5
file6
对于那种奇怪的情况,zip实际上可能包含
dir/ // the entry won't actually have any content though
dir/file1
dir/file2
dir/file3
file4
file5
file6
这对于zip文件管理器确定如何提取条目非常有用。