2013-08-28 3 views
2

나는 수천 개의 작은 파일이있는 많은 디렉토리가 들어있는 큰 ZIP 파일을 가지고 있습니다.C를 추출하지 않고 ZIP 읽기

7-Zip을 사용하여 ZIP에서 추출하는 과정은 꽤 오래 걸립니다. C#에서는 먼저 전체 ZIP을 추출하기 전에 추출 할 수 있었지만 이상적으로는 ZIP에서 메모리로 한 번에 하나의 파일을 읽고 디스크의 특정 위치로 추출하지 않아도됩니다.

DotNetZip 및 SharpZipLib와 함께 네이티브 C# ZIP 유틸리티를 살펴 봤지만 직접적으로 어떤 것을 본적이 없습니다.

&이 작업을 실제로 수행하면 첫 번째 위치에서 단순히 추출하는 것보다 성능상의 이점이 있습니까?

+0

당신은 그 도서관의와'Stream'로 우편을 열 수 있습니다. – Romoku

+2

메모리는 드라이브 IO보다 훨씬 빠르기 때문에 압축을 풀 때보다 스트리밍을 사용하면 성능이 크게 향상됩니다. – NWard

답변

0

DotNetZip을 사용하여 zip 파일에서 모든 fileName (및 해당 속성)을 추출 할 수 있습니다.

using (ZipFile zipFile = ZipFile.Read(ExistingZipFile)) 
{ 
    foreach (ZipEntry zip in zipFile) 
    { 
     System.Console.WriteLine("Zipfile: {0}", zip.FileName); 
     System.Console.WriteLine("Zipfile: {0}", zip.Comment); 
    } 
} 
1
using (ZipArchive zipFile = ZipFile.OpenRead(zipPath)) 
     { 
      foreach(ZipArchiveEntry zip in zipFile.Entries) 
      { 
       System.Console.WriteLine("Zipfile: {0}", zip.FullName); 
       System.Console.WriteLine("Zipfile: {0}", zip.Length); 
      } 
     }