2011-01-24 3 views
4

예를 찾아 보았지만 특정 폴더 추출과 관련된 DotNetZip 시나리오를 찾을 수 없습니다. .zip 파일에서 "CSS"라는 폴더를 추출하려고하는데,이 파일은 .zip 파일 내부의 최상위 폴더입니다.DotNetZip을 사용하여 zip에서 특정 폴더 추출하기

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

2

이 시도 :

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

나는 이것이 가장 좋은 방법이라고 생각합니다.

관련 문제