打开 zip 存档中的特定文件夹并迭代目录结构

时间:2021-06-02 20:50:30

标签: java python directory-structure

我们可以使用 python 确定 zip 存档的文件夹结构,如下所示(我们也可以在 Java 中这样做):

with zipfile.ZipFile('path to file', 'r') as zipobj:
    for item in zipobj.infolist():
        print(item.filename)

但是,是否可以确定 zip 存档内特定文件夹的文件夹结构并仅迭代该文件夹内的所有文件/文件夹(类似于路径对象)? (而不是像前面的代码示例中所示迭代 zip 存档中的所有文件/文件夹)

2 个答案:

答案 0 :(得分:0)

您可以将文件作为 ZipFile 读取,然后遍历所有文件夹条目。这是 Java 中的代码片段:

ZipFile zip = new ZipFile(file);
Enumeration<? extends ZipEntry> entries = zip.entries();
while (entries.hasMoreElements()) {
  ZipEntry entry = entries.nextElement();
  if (entry.isDirectory()) {
      // Code goes here
  }
}

答案 1 :(得分:0)

使用 Java NIO 将 ZIP 结构读取为 Path 组件非常简单,因为 ZIP 文件系统有内置的处理程序 - 请参阅 FileSystems.newFileSystem(zip),它提供的 Path 对象可与其他 NIO 类一起使用,例如Files

例如,这会扫描从文件夹 org/apache 开始的 zip,您可以替换所需的任何其他过滤器来处理 ZIP 结构,就像任何其他光盘文件系统一样:

try (FileSystem fs = FileSystems.newFileSystem(zip)) {
    Path root = fs.getPath("org/apache");
    try(Stream<Path> stream = Files.find(root, Integer.MAX_VALUE, (p,a) -> true)) {
        stream.forEach(System.out::println);
    }
}
相关问题