gpt4 book ai didi

java - ZipEntry.isDirectory() 和 Enumeration 只看到目录内容,看不到目录

转载 作者:行者123 更新时间:2023-11-29 03:19:33 27 4
gpt4 key购买 nike

我正在努力查看 .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 时,我都会得到“正常输出”。我真的很想有一致的行为,但我不知道出了什么问题。有什么想法吗?

提前致谢!

最佳答案

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 文件管理器确定应如何提取条目很有用。

关于java - ZipEntry.isDirectory() 和 Enumeration<? extends ZipEntry> 只看到目录内容,看不到目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24521130/

27 4 0