SharpZipLib:检查并选择ZIP文件的内容

9

我正在一个项目中使用SharpZipLib,想知道是否可以用它来查看zip文件的内容,如果其中的某个文件在我搜索的范围内有数据修改,则将其选出并复制到新目录中?有人知道这是否可能吗?


我相信这是可能的。您需要打开存档并查看文件集合的内容。根据最后修改信息是否公开,将决定您是否能够执行其他操作。我不知道为什么不会公开,SharpZibLib库允许这样做,因此它也应该允许这样做。否则,总有其他解决方案可以实现这一点。 - Security Hound
1个回答

16

是的,使用SharpZipLib可以枚举zip文件中的文件。您还可以从zip文件中选择文件并将这些文件复制到磁盘上的目录中。

下面是一个小示例:

using (var fs = new FileStream(@"c:\temp\test.zip", FileMode.Open, FileAccess.Read))
{
  using (var zf = new ZipFile(fs))
  {
    foreach (ZipEntry ze in zf)
    {
      if (ze.IsDirectory)
        continue;

      Console.Out.WriteLine(ze.Name);            

      using (Stream s = zf.GetInputStream(ze))
      {
        byte[] buf = new byte[4096];
        // Analyze file in memory using MemoryStream.
        using (MemoryStream ms = new MemoryStream())
        {
          StreamUtils.Copy(s, ms, buf);
        }
        // Uncomment the following lines to store the file
        // on disk.
        /*using (FileStream fs = File.Create(@"c:\temp\uncompress_" + ze.Name))
        {
          StreamUtils.Copy(s, fs, buf);
        }*/
      }            
    }
  }
}
在上面的示例中,我使用一个MemoryStreamZipEntry存储在内存中(以便进行进一步的分析)。如果符合某些条件,您也可以将ZipEntry存储在磁盘上。希望这有所帮助。

这正是我所寻找的,非常感谢! - DukeOfMarmalade

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接