从Zip中提取特定的子文件夹

时间:2013-10-07 10:37:11

标签: c#

我有一个zip文件,在根目录中只包含两个文件夹:BinariesSource但我只需要Binaries文件夹。在C#中有可能吗? 这是我目前的代码,但不起作用。

using (ZipArchive archive = ZipFile.OpenRead(zipPath.FullName))
{
     foreach (ZipArchiveEntry entry in archive.Entries)
     {
        if (entry.FullName.StartsWith(@"Binaries/", StringComparison.OrdinalIgnoreCase))
        {
             entry.ExtractToFile(Path.Combine(extractPath, "Hepper"));
        }
     }
} 

更新 它给了我这个错误文件

  

'C:\ Hepper \ Hepper'已经存在。

2 个答案:

答案 0 :(得分:1)

一目了然(实际上没有检查API),您似乎试图将所有条目提取到相同的文件名(Path.Combine(extractPath, "Hepper"))。您可能希望将entry中的路径和文件名作为要提取到的位置的一部分。

答案 1 :(得分:0)

我找到了解决问题的方法:

using (Ionic.Zip.ZipFile zip1 = Ionic.Zip.ZipFile.Read(path.FullName))
{
       var selection = (from e in zip1.Entries
                      where (e.FileName).StartsWith("Binaries/")
                                 select e);


     Directory.CreateDirectory(_localExtratingPath.FullName);

     foreach (var e in selection)
     {
         e.Extract(_localExtratingPath.FullName);
     }
}