Ionic Zip仅提取特定文件夹

本文关键字:文件夹 提取 Zip Ionic | 更新日期: 2023-09-27 18:21:27

我有一个案例,需要使用C#Ionic.Zip库提取Zip文件。Zip文件包含多个文件夹,我想提取一个特定的文件夹并将其复制到特定的目的地。

例如,名为abc.Zip的Zip文件和目录结构将类似

父目录->子目录1->文件a、文件b父目录->子目录2->文件c,文件d

我只想复制子目录1,如何完成此任务?

Ionic Zip仅提取特定文件夹

        var existingZipFile = "name of the file.zip";
        var targetDirectory = "name of the folder";
        using (ZipFile zip = ZipFile.Read(existingZipFile))
        {
            foreach (ZipEntry e in zip.Where(x => x.FileName.StartsWith("Sub directory 1")))
            {
                e.Extract(targetDirectory);
            }
        }

这里有另一个可能的解决方案:

using (ZipFile zip = ZipFile.Read(sourceFile))
{
    zip.ExtractSelectedEntries("name = *", "My sub directory", targetPath, ExtractExistingFileAction.OverwriteSilently);
}

虽然这可能比枚举所有条目然后过滤它们更快,但它也有不提取空文件夹的缺点。