Ionic Zip Extract仅限特定文件夹

时间:2014-09-11 12:33:08

标签: c# zip unzip

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

e.g。名为abc.zip的zip文件和目录结构将类似于

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

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

2 个答案:

答案 0 :(得分:3)

        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);
            }
        }

答案 1 :(得分:0)

这是另一种可能的解决方案:

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

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