34

你认为哪种方法是“最好的”。

  • 使用System.IO.Packaging命名空间?
  • 使用与 Shell 的互操作?
  • .NET 的第三方库?
  • 与开源非托管 DLL 互操作?

[我可以针对 Framework 3.5;最好 = 最容易设计、实施和维护。]

我最感兴趣的是为什么你认为选择的方法是最好的。

4

8 回答 8

23

我一直使用SharpZipLib

忘了为什么部分:主要是因为它已经存在了很长时间。它有据可查,并且有一个直观的 API。另外,如果您喜欢这种类型的东西,它是开源的。

于 2008-12-21T21:11:36.650 回答
16

我发现DotNetZip 库是处理 zip 文件的最简单方法。SharpZipLib是一个更加强大和灵活的解决方案。

于 2008-12-21T21:19:10.520 回答
16

DotNetZip使用起来非常简单。我喜欢它,因为它是完全托管的——不需要 shell 交互。编程模型比 shell 更简单、更干净。它也比 SharpZipLib 以及 .NET 3.0 中添加的 Packaging 类更简单。它是免费的、小型的、积极维护的。

它比一个海报提供的 J# 选项要好得多 - J# 是一个巨大的运行时和一个巨大的药丸,只能吞下 ZIP 支持。J# 支持也将停止。在 J# 上引入新的依赖关系可能不是一个好主意。

DotNetZip 的示例代码:

  try
  {
      using (ZipFile zip = new ZipFile(args[0], System.Console.Out))
      {
          zip.AddDirectory(args[1]); // recurses subdirectories
          zip.Save();
      }
  }
  catch (System.Exception ex1)
  {
      System.Console.Error.WriteLine("exception: " + ex1);
  }

DotNetZip 适用于 .NET v2.0、3.0、3.5 以及 Compact Framework v2.0 和 3.5。它处理 ZIP 文件、Unicode 文件名、注释、密码。它做 ZIP64 以及自解压档案。它很快。尝试一下。

于 2009-01-04T03:47:09.623 回答
15

我意识到这是一个老问题,但我只是想我会添加一个更新的答案。如果您使用的是 .NET 4.5,那么您可以使用新的内置ZipFile以编程方式轻松地将多个文件保存到一个 zip 文件夹中。

首先,您需要将文件准备到一个新文件夹(Directory.CreateDirectory, File.Move)中,然后您可以简单地使用ZipFile.CreateFromDirectory方法(改编自链接页面):

string filePathOfNewFolder = @"c:\example\start";
string zipFilePath = @"c:\example\result.zip";

ZipFile.CreateFromDirectory(filePathOfNewFolder, zipFilePath);
于 2014-05-09T08:49:32.387 回答
2

System.IO.Compression 命名空间下的 GZipStream 和 DeflateStream 类使压缩内容变得非常容易。

更新:评论正确地指出这些类不允许您操作 Zip 文件。但是,J# dll 在 java.util 和 java.io 命名空间中包含所需的功能。有关更多详细信息,请参阅dmihailescu的代码项目文章,其中详细介绍了它们的使用并提供了示例代码。

于 2008-12-21T21:15:15.270 回答
2

没有人提到Xceed Zip 组件。我以前用过它,它非常适合创建 zip 文件和压缩数据流。我强烈推荐它,但可能需要权衡许可费。

于 2008-12-22T03:46:32.233 回答
1

由于您的目标是 Framework 3.5,我会选择System.IO.Packaging. 它是专为压缩而设计的库,并附带框架,因此产品甚至不需要额外的 DLL。但是,使用示例很糟糕。

不推荐使用 shell。首先,它只适用于 Windows XP 及更高版本。但即使你不在乎,它的陷阱也很多(我以前做过,但只是因为我真的别无选择)。

如果您的目标不是 3.5,我会使用SharpZipLib. 这是一个相当不错的库,即使您使用的是 3.5,您也可以考虑使用它。

于 2008-12-21T21:16:36.343 回答
0

Ultimate ZIP 是一个高性能且可靠的压缩组件,可让您轻松创建和操作 ZIP、TAR、TGZ、GZ 档案,并在您的 .NET 跨平台中浏览先前创建的档案的内容应用。它完全用 C# 编写,应用了最佳设计模式和低级 .NET 优化,它为您的 .NET 应用程序提供了性能、可靠性和可扩展性。该软件包附带了许多代码片段和 VB.NET 和 C# 中完整记录的示例,说明了如何创建、压缩和解压缩档案。

.NET 的终极 ZIP 组件

于 2018-06-24T10:06:09.373 回答