在不提取C#的情况下读取ZIP

时间:2013-08-28 13:50:48

标签: c# .net zip dotnetzip

我有一个大型的ZIP文件,其中包含许多目录,每个目录都需要读取数万个小文件。

使用7-Zip从ZIP中提取它们的过程需要相当长的时间。在C#中,我可以先在整个ZIP上提取整个ZIP,然后再进行操作,但理想情况下我只想从ZIP读取一个文件到内存中,而不必将其提取到磁盘上的某个位置。

我查看了本地C#ZIP实用程序以及DotNetZip和SharpZipLib,但没有看到任何与我所追求的直接相关的内容。

这可以做到吗?它是否真的会提供任何性能优势,而不仅仅是首先提取?

2 个答案:

答案 0 :(得分:2)

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);
            }
        }

答案 1 :(得分:-1)

您可以使用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);
  }
}