2011-01-24 142 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 */} 

我覺得這是最好的辦法。