如何在 C# 中解压缩多层 zip 文件

Posted

技术标签:

【中文标题】如何在 C# 中解压缩多层 zip 文件【英文标题】:How to unzip multi layered zip files in C# 【发布时间】:2020-04-08 19:54:10 【问题描述】:

我知道如何解压缩压缩文件,这里有堆栈溢出问题的解决方案。但是我没有找到在 zip 文件中有多层 zip 文件的解决方案。

假设我有目录 c:\myfolder\grandfather.zip\father.zip\child.zip\familyimage.jpg。

我想计算这些 zip 文件下的所有文件。并将它们提取到另一个位置。

我如何在 C# .Net 中做到这一点

【问题讨论】:

像任何其他文件一样提取内部 zip 文件,然后打开它并提取其中的文件 【参考方案1】:

您可以解压缩一次,循环浏览所有文件,如果任何提取的文件扩展名是 *.zip,那么您可以再次解压缩。因为听起来你知道如何解压缩一次,所以发布嵌套解压缩只是逻辑编码。 你可以使用这个方法:

public static void ExtractFile(string baseZipPath, string extractPath)

        if (!Directory.Exists(extractPath))
            Directory.CreateDirectory(extractPath);

        ZipFile.ExtractToDirectory(baseZipPath, extractPath);
        string[] nestedZipDirectories = System.IO.Directory.GetFiles(extractPath, "*.zip");
        foreach (var nestedZipDirectory in nestedZipDirectories)
        
            ZipFile.ExtractToDirectory(nestedZipDirectory, extractPath);
        

然后:

static void Main(string[] args)

    ExtractFile(@"c:\myfolder\grandfather.zip", @"c:\myfolder2");

【讨论】:

以上是关于如何在 C# 中解压缩多层 zip 文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在 HDFS 中解压缩多个 zip 文件

如何在iOS中解压缩异步方式的zip文件?

如何在php中解压缩zip文件[重复]

如何使用 Azure Function 在 Azure 文件共享中解压缩文件?

如何使用内部 Windows XP 选项在 VBScript 中解压缩文件

使用 ZipFile 类从多个文件的 zip 存档中解压缩文件