如何使用.NET压缩目录?

我有一个包含多个文件的目录。 我想将此文件夹压缩为zip或tar.gz文件。 我怎样才能在C#中完成他的工作?

您可以使用DotNetZip Library 。 它具有相当丰富和实用的function。


编辑:

string[] MainDirs = Directory.GetDirectories(DirString); for (int i = 0; i < MainDirs.Length; i++) { using (ZipFile zip = new ZipFile()) { zip.UseUnicodeAsNecessary = true; zip.AddDirectory(MainDirs[i]); zip.CompressionLevel = Ionic.Zlib.CompressionLevel.BestCompression; zip.Comment = "This zip was created at " + System.DateTime.Now.ToString("G"); zip.Save(string.Format("test{0}.zip", i)); } } 

考虑使用SharpZipLib 。 它支持C#中的GZip和ZIP压缩。

这里有一个很好的教程,概述了使用SharpZipLib压缩目录时需要做什么。

在C#中使用命令行中的7zip – > LZMA SDK支持C#,包中有代码示例

我使用.NET Framework 3.5中引入的System.IO.Packaging命名空间。 我决定使用那个,因为它基于.NET Framework Ba​​se类,并且不需要第三方代码,这会破坏代码的大小。

这是关于这个问题的Stackoverflow 的另一篇文章

这里是 Namespace和ZipPackage声明/解释@MSDN

希望有所帮助

基督教

在我以前的工作中,我们使用了#ziplib 。

这是一个很好的讨论 ,讨论了在没有任何第三方库的情况下这样做的可能性。 我想你应该看看它。

这是一个大型示例代码存储库 ,可以帮助您完成工作。 祝好运..

GZip是Microsoft Framework 2.0的一部分。 它在System.IO.Compression命名空间下称为GZipStream 。

要使用此类压缩目录,您必须创建一个包含Files集合的可序列化类(例如Directory)。

Files类将包含文件名和文件流以从文件中读取字节。 一旦你在目录上应用GZip,它将逐个读取文件并将它们写入GZipStream。

请访问此链接: http : //www.vwd-cms.com/forum/forums.aspx?topic = 18

另一个3.5之前的选项是使用J#的zip实用程序。 毕竟,.Net并不关心代码最初编写的语言;-)。

有关如何执行此操作的文章:

  • ASP-联盟
  • MSDN
  • CodeProject上
  • C-Sharp Corner

问题很古老,答案也是如此。

自2012年底以来的最佳答案是:使用.NET 4.5和包含的System.IO.CompressionSystem.IO.Compression.ZipArchive命名空间类。

如果您在互联网上搜索,您会收到许多示例链接之一: http : //www.codeproject.com/Articles/381661/Creating-Zip-Files-Easily-in-NET

自2014/2015以来ff。:使用Roslyn,整个框架库作为开源发布,因此AFAI理解它,您可以自由地从4.5类中提取代码(因为它应该不是系统特定的)并将其用作早期.NET框架的库。 也许这会比使用其他类提供一些许可优势 – 但这必须由您进行分析。