如何从C#.NET 4.5中的zip存档中提取特定目录?

时间:2014-03-02 20:32:46

标签: c# .net compression zip

我的zip文件具有以下内部结构:

file1.txt
directoryABC
    fileA.txt
    fileB.txt
    fileC.txt

将文件从“directoryABC”文件夹中提取到硬盘上的目标位置的最佳方法是什么?例如,如果目标位置为“C:\ temp”,则其内容应为:

temp
    directoryABC
        fileA.txt
        fileB.txt
        fileC.txt

同样在某些情况下,我只想提取“directoryABC”的内容,结果如下:

temp
    fileA.txt
    fileB.txt
    fileC.txt

如何通过在C#.NET 4.5中使用System.IO.Compression中的类来实现此目的?

1 个答案:

答案 0 :(得分:11)

这是另一个将命名目录的文件解压缩到目标目录的版本......

class Program
{
    static object lockObj = new object();

    static void Main(string[] args)
    {
        string zipPath = @"C:\Temp\Test\Test.zip";
        string extractPath = @"c:\Temp\xxx";
        string directory = "testabc";
        using (ZipArchive archive = ZipFile.OpenRead(zipPath))
        {
            var result = from currEntry in archive.Entries
                         where Path.GetDirectoryName(currEntry.FullName) == directory
                         where !String.IsNullOrEmpty(currEntry.Name)
                         select currEntry;


            foreach (ZipArchiveEntry entry in result)
            {
                entry.ExtractToFile(Path.Combine(extractPath, entry.Name));
            }
        } 
    }        
}