JAVA ZipFile entries() 方法看不到目录

标签 java zip

我在处理数字文档和数字签名时偶然发现了一个问题。

输入:documentX.adoc - 包含文件和文件夹的 zip 文件。

我需要获取输入文件中的所有内容 - 目录和文件列表。

我要做什么:

ZipFile adocFile = new ZipFile(documentXFileName);
ArrayList <String> adocFiles = new ArrayList<String>();
Enumeration <? extends ZipEntry> entries;
entries = adocFile.entries();
for (entries = adocFile.entries(); entries.hasMoreElements();)
{
    adocFiles.add(entries.nextElement().getName());
}

我已经尝试创建 ArrayList < ZipEntry > 并添加 ZipEntries 而不是名称 - 仍然没有。也许还有其他方法?奇怪的是,ZipEntry 有一个 .isDirectory() 方法...

感谢帮助, 马丁

最佳答案

来自documentation :

A directory entry is defined to be one whose name ends with a '/'.

不必将目录存储在 ZIP 文件中 - 它们是可选条目。可以使用路径 foo/bar.txt 存储字节序列,而没有名为 foo 的条目。 Zip 工具可能会让人产生这样的错觉,即这些东西存在于存档中,即使它们不存在也是如此。

关于JAVA ZipFile entries() 方法看不到目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4215685/

相关文章:

java - 使用 struts 中的 jsp 唯一标识每一行以在表单中使用

java - 为什么总是有 isEmpty 而我 99% 的时间都使用 !isEmpty

java - 如何将 zip 文件读取为字节数组,然后将字节数组转换回 zip 文件?

java - 无法扩展 ZIP,我该如何解决此错误?

c# - 如何从 C# 代码传输 zip 文件

python - 从 zip 文件中提取文件并保留修改日期?

java - spring如何识别构造函数中的参数

java - Square Tape file backed queue 可以从 android 的主线程使用吗?

iphone - ZipKit 和 Xcode 4

java - 在屏幕解锁时启动 Android 应用程序