2011-01-24 148 views
4

我已经搜索了各地的示例,但似乎无法找到涉及解压缩某个文件夹的DotNetZip场景。我试图从.zip文件中提取名为“CSS”的文件夹,它是.zip文件中的顶级文件夹。这是我的代码至今:使用DotNetZip从压缩文件中提取特定文件夹

using (ZipFile zip1 = ZipFile.Read(savedFileName)) 
{ 
    var selection = from e in zip1.Entries 
        where System.IO.Path.GetFileName(e.FileName).StartsWith("CSS/") 
        select e; 

    foreach (var e in selection) 
    e.Extract(_contentFolder);     
} 

当前的选择抓住什么,所以它提取的CSS文件夹及其所有子目录和文件,我可以使用一些帮助重写它。

回答

8

这对我有用。

  public void ExtractFiles(string fileName, string outputDirectory) 
      { 
       using (ZipFile zip1 = ZipFile.Read(fileName)) 
       { 
        var selection = (from e in zip1.Entries 
            where (e.FileName).StartsWith("CSS/") 
            select e); 


        Directory.CreateDirectory(outputDirectory); 

        foreach (var e in selection) 
        {        
         e.Extract(outputDirectory);   
        } 
       } 
     } 
+0

+1 - Path.GetFileName(“CSS /”)将返回“”。 – shaunmartin 2011-01-25 00:00:36

2

试试这个:

var entries = zip.SelectEntries("*", @"folder1\folder2\"); 
foreach (var file in entries) 
{/* extract here */} 

我觉得这是最好的办法。