Ionic 压缩文件提取特定文件夹

3
我有一个问题,需要使用C# Ionic.zip库提取Zip文件。Zip文件包含多个文件夹,我想将其中一个特定的文件夹提取和复制到指定的目标位置。
例如,Zip文件名为abc.zip,目录结构如下:
父目录->子目录1->文件a、文件b 父目录->子目录2->文件c、文件d
我只想复制子目录1,怎样才能完成这个任务呢?
2个回答

5
        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
即使OP很高兴:您的建议是否创建了一个子目录结构父目录->子目录1->文件a,而问题只要求子目录1->文件a?然后我可以想象使用Extract()的ExtractCriterion参数比创建所有条目然后过滤它们更快。 - Peter - Reinstate Monica

0

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

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接