2

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

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

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

这可以做到吗?它实际上会比最初简单地提取提供任何性能优势吗?

4

2 回答 2

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);
            }
        }
于 2015-09-21T00:30:58.007 回答
-2

您可以使用 DotNetZip 从 zip 文件中提取每个文件名(及其属性)。

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

请参阅:https ://www.nuget.org/packages/DotNetZip/ 旧存档:https ://archive.codeplex.com/?p=dotnetzip

于 2013-08-28T13:55:41.563 回答