2014-09-11 3 views
1

C# Ionic.zip 라이브러리로 압축 파일을 추출해야하는 경우가 있습니다. Zip 파일에는 여러 폴더가 있으며 특정 폴더를 추출하여 특정 대상에 복사하려고합니다.Ionic Zip 특정 폴더 만 추출

예컨대 abc.zip 및 디렉토리 구조로 명명 zip 파일, 파일의 파일 B 상위 디렉토리 -> 하위 디렉토리 2-> 파일 c, 파일 D>

상위 디렉토리 -> 하위 디렉토리 1- 같을 것이다

Sub Directory 1을 복사하고 싶습니다. 어떻게이 작업을 수행 할 수 있습니까?

using (ZipFile zip = ZipFile.Read(sourceFile)) 
{ 
    zip.ExtractSelectedEntries("name = *", "My sub directory", targetPath, ExtractExistingFileAction.OverwriteSilently); 
} 

이 빠르게을 필터링 한 후 모든 항목을 열거하고있을 수 있지만, 그것을 가지고 있지만, 빈 폴더를 추출하지 않는 단점 :

답변

2
 var existingZipFile = "name of the file.zip"; 
     var targetDirectory = "name of the folder"; 

     using (ZipFile zip = ZipFile.Read(existingZipFile)) 
     { 
      foreach (ZipEntry e in zip.Where(x => x.FileName.StartsWith("Sub directory 1"))) 
      { 
       e.Extract(targetDirectory); 
      } 
     } 
+1

감사합니다. 그것은 속임수를했습니다! –

+0

@DashyKhan Sweet. 응답을 upvote하시기 바랍니다 – playful

+0

OP가 행복하더라도 : 귀하의 제안은 하위 디렉토리 구조를 만들지 않습니다 * 상위 디렉토리 -> 하위 디렉토리 1-> 파일 *, 질문에 대한 질문 * 단지 하위 디렉토리 1-> 파일 * ? 그리고 나서 Extract()에 대해 ExtractCriterion 매개 변수를 사용하는 것이 모든 항목을 작성한 다음 필터링하는 것보다 빠르다는 것을 알 수 있습니다. –

0

여기에 또 다른 가능한 솔루션입니다.