3

请告诉我如何计算 ZIP 文件中的文件数。

我需要一个 C# 代码来在 Visual Studio 中完成这项工作。谷歌搜索时尝试了许多代码,但收到错误消息:

找不到 ZIPENTRY/ZIPFILE 的命名空间或程序集。

谁能告诉我我应该包括什么/需要安装什么/提供任何代码来计算文件的数量?

4

3 回答 3

5

正如 MSDN 所说(.Net 4.5),您可以使用ZipArchiveZipFile类:

http://msdn.microsoft.com/en-us/library/system.io.compression.ziparchive.aspx http://msdn.microsoft.com/en-us/library/system.io.compression.zipfile.aspx

System.IO.Compression命名空间中的类虽然位于不同的程序集 System.IO.CompressionSystem.IO.Compression.FileSystem中。

所以你可以在你的项目中添加对System.IO.CompressionSystem.IO.Compression.FileSystem程序集的引用并尝试这样的事情:

...
using System.IO.Compression; 
...


  // Number of files within zip archive
  public static int ZipFileCount(String zipFileName) {
    using (ZipArchive archive = ZipFile.Open(zipFileName, ZipArchiveMode.Read)) {
      int count = 0;

      // We count only named (i.e. that are with files) entries
      foreach (var entry in archive.Entries)
        if (!String.IsNullOrEmpty(entry.Name))
          count += 1;

      return count;
    }
  }

另一种可能性是使用 DotNetZip 库,请参阅:

使用 c# 计算 Zip 文件中的文件数

于 2013-08-28T05:54:17.433 回答
1

您必须将引用System.IO.CompressionSystem.IO.Compression.FileSystem添加到您的项目中

using (var archive = System.IO.Compression.ZipFile.Open(filePath, ZipArchiveMode.Read))
{
    var count = archive.Entries.Count(x => !string.IsNullOrWhiteSpace(x.Name));
}
于 2017-05-10T08:56:54.013 回答
-1

您可以使用DotNetZip尝试类似的操作。

using DotNetZip;

int count;
using (ZipFile zip = ZipFile.Read(path))
    count = zip.Count;

我在这里找到了这个解决方案。

于 2013-08-28T05:23:29.067 回答