【问题标题】:c# looking for API to read 7z headersc#寻找API来读取7z标头
【发布时间】:2012-07-23 18:10:09
【问题描述】:

是否有基于 c# 的 7zip (7z) API 支持读取其标头以检索压缩存档中每个文件的 CRC 信息的能力?我看过的所有内容都需要您解压缩文件。我正在编写一个应用程序,将压缩文件夹中文件的 CRC 与单独的列表进行比较。

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

...

【问题讨论】:

标签: c# crc 7zip dotnetzip


【解决方案1】:

这听起来像是一个重复的帖子.. 这里看看这个 StackOverFlow 链接上的一些答案 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");

  }
}

【讨论】:

  • 我已经看过那个帖子了。不幸的是,这些 API似乎都没有调用来读取压缩存档中每个文件的 CRC。
  • 我正在更多地研究 7ZipStream code.google.com/p/7zipstream/source/browse/trunk/_Documentation/… 在“使用 7z 解码器的步骤”的第 5 步中,我来到了列表项示例。我想知道CFileItem中是否有东西。
  • 如果您使用的是 DotNetZip,我将发布一些可能对您有用的内容.. 让我知道这是否可行
  • 我以为 DotNetZip 不支持 7z 文件?我已经为 .zip 文件使用了 ZipEntry API。
  • 我找到了一个看起来像 DotnetZip 可以工作的示例。我没有在我的本地安装它,但在我的工作机器上安装了它。所以无法测试它只是试一试。 . 单步执行代码,看看它是否是您要查找的内容,或者代码 sn-p 是否有帮助
猜你喜欢
  • 2016-09-02
  • 2021-02-05
  • 2015-02-16
  • 2014-06-15
  • 2011-11-04
  • 2012-05-08
  • 1970-01-01
  • 2017-09-06
  • 1970-01-01
相关资源
最近更新 更多