在.NET中创建ZIP存档的最佳/最简单方法是什么?

时间:2008-12-21 21:07:42

标签: c# .net zip

您认为哪种方法是“最佳”。

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

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

我最感兴趣的是你认为所选方法最好的原因。

8 个答案:

答案 0 :(得分:23)

我一直使用SharpZipLib

忘了原因部分:主要是因为它已经存在了很长时间。它有详细记录,并具有直观的API。如果你喜欢这种类型的话,它还是开源的。

答案 1 :(得分:16)

我发现DotNetZip Library是使用zip文件的最简单方法。 SharpZipLib是一个更强大,更灵活的解决方案。

答案 2 :(得分: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以及自解压档案。它很快。试试吧。

答案 3 :(得分:14)

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

首先,您需要将文件准备到新文件夹(Directory.CreateDirectoryFile.Move),然后您只需使用ZipFile.CreateFromDirectory Method(从链接页面改编) ):

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

ZipFile.CreateFromDirectory(filePathOfNewFolder, zipFilePath);

答案 4 :(得分:2)

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

更新: 注释正确地说明这些类不允许您操作Zip文件。但是,J#dll包含java.util和java.io名称空间中所需的功能。有关详细信息,请参阅dmihailescu的Code Project article,其中详细介绍了它们的用法并提供了示例代码。

答案 5 :(得分:2)

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

答案 6 :(得分:1)

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

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

如果您没有定位3.5,我会使用SharpZipLib。这是一个非常好的库,即使你使用的是3.5,你也可以考虑它。

答案 7 :(得分:0)

Ultimate ZIP是一种高性能且可靠的压缩组件,它使您可以轻松地即时创建和处理ZIP,TAR,TGZ,GZ存档,以及浏览.NET中先前创建的存档的内容。跨平台应用程序。它完全是用C#编写的,具有最佳的设计模式和已应用的低级.NET优化,它为.NET应用程序提供了性能,可靠性和可扩展性。该软件包随附了许多代码段以及VB.NET和C#中完整记录的示例,这些示例说明了如何创建,压缩和解压缩存档。

Ultimate ZIP component for .NET