2012-07-23 2 views
2

압축 아카이브의 각 파일에 대한 CRC 정보를 검색하기 위해 헤더를 읽을 수있는 기능을 지원하는 7zip (7z) 용 C# 기반 API가 있습니까? 내가 본 모든 것은 파일의 압축을 풀 것을 요구합니다. 압축 된 폴더에있는 파일의 CRC를 별도의 목록과 비교하는 응용 프로그램을 작성 중입니다.C# 7z 헤더를 읽는 API를 찾으십시오.

저는 현재 Zip 파일 용으로 DotNetZip을 사용하고 있으며 훌륭하게 작동합니다. 불행히도 .7z는 지원되지 않습니다.

편집 : ZipFile.Read()

{Ionic.Zip.ZipException: Cannot read that as a ZipFile ---> Ionic.Zip.BadReadException: Bad signature (0xAFBC7A37) at position 0x00000000 
    at Ionic.Zip.ZipEntry.ReadHeader(ZipEntry ze, Encoding defaultEncoding) 
    at Ionic.Zip.ZipEntry.ReadEntry(ZipContainer zc, Boolean first) 
    at Ionic.Zip.ZipFile.ReadIntoInstance_Orig(ZipFile zf) 
    at Ionic.Zip.ZipFile.ReadIntoInstance(ZipFile zf) 
    --- End of inner exception stack trace --- 
    at Ionic.Zip.ZipFile.ReadIntoInstance(ZipFile zf) 
    at Ionic.Zip.ZipFile.Read(String fileName, TextWriter statusMessageWriter, Encoding encoding, EventHandler`1 readProgress) 
    at Ionic.Zip.ZipFile.Read(String fileName) 

를 호출 할 때 발생하는 예외 ...

이 중복 포스트 같은 소리
+0

가능한 [7zip (LZMA)을 지원하는 C#의 무료 압축 라이브러리] (http://stackoverflow.com/questions/449998/free-compression-library-for-c-sharp-which-supports-7zip-lzma) – stakx

+0

아닙니다. 불행하게도 그 API로 헤더에서 CRC 정보를 읽는 쉬운 방법은 없습니다. –

답변

1

가 .. 여기에 유래 링크 Reading 7z files에 몇 가지 답변을보고

당신이 DotNetZip이

using (ZipFile zip = ZipFile.Read(ExistingZipFile)) 
{ 
    foreach (ZipEntry ze in zip) 
    { 
    if (header) 
    { 
     System.Console.WriteLine("Zipfile: {0}", zip.Name); 
     if ((zip.Comment != null) && (zip.Comment != "")) 
     System.Console.WriteLine("Comment: {0}", zip.Comment); 
     System.Console.WriteLine("\n{1,-22} {2,8} {3,5} {4,8} {5,3} {0}", 
           "Filename", "Modified", "Size", "Ratio", "Packed", "pw?"); 
     System.Console.WriteLine(new System.String('-', 72)); 
     header = false; 
    } 
    System.Console.WriteLine("{1,-22} {2,8} {3,5:F0}% {4,8} {5,3} {0}", 
          ze.FileName, 
          ze.LastModified.ToString("yyyy-MM-dd HH:mm:ss"), 
          ze.UncompressedSize, 
          ze.CompressionRatio, 
          ze.CompressedSize, 
          (ze.UsesEncryption) ? "Y" : "N"); 

    } 
} 
아래의 예를하려고 사용하는 경우이 당신을 위해 작동합니다
+0

나는 그 지위를 이미 보았다. 유감스럽게도 이러한 API 중 압축 된 아카이브의 각 파일에 대한 CRC를 읽는 호출이있는 것은 아닙니다. –

+0

다시 한번 결과가 표시 될 것입니다. – MethodMan

+0

7ZipStream에 대한 자세한 내용을 찾고 있습니다. http://code.google.com/p/7zipstream/source/browse/trunk/_Documentation/7zC.txt?r=3 "7z 디코더 사용 단계"의 5 단계에서 목록 항목 예제가 나타났습니다. CFileItem에 무언가가 있는지 궁금합니다. –

관련 문제