2012-07-23 154 views
2

是否有基於c#的API for 7zip(7z)支持讀取其標題以檢索壓縮存檔中每個文件的CRC信息?我看過的所有東西都需要你解壓文件。我正在編寫一個應用程序,將壓縮文件夾中的文件的CRC與單獨的列表進行比較。c#尋找API來讀取7z標頭

我目前正在使用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

[可用於C#的免費壓縮庫,支持7zip(LZMA)]的可能重複(http://stackoverflow.com/questions/449998/free-compression-library-for-c-sharp-which-supports-7zip-lzma ) – stakx 2012-07-23 18:15:20

+0

不是。不幸的是,沒有簡單的方法可以通過該API從頭文件中讀取CRC信息。 – 2012-07-24 01:53:49

回答

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。 – 2012-07-23 18:22:58

+0

讓我再看看會不會回來 – MethodMan 2012-07-23 18:24:05

+0

我正在尋找更多7ZipStream http://code.google.com/p/7zipstream/source/browse/trunk/_Documentation/7zC.txt?r=3 在「使用7z解碼器的步驟」的第5步中,我列出了列表項示例。我想知道在CFileItem中是否有某些東西。 – 2012-07-23 18:28:09