如何使用.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 Base类,并且不需要第三方代码,这会破坏代码的大小。
这是关于这个问题的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.Compression
和System.IO.Compression.ZipArchive
命名空间类。
如果您在互联网上搜索,您会收到许多示例链接之一: http : //www.codeproject.com/Articles/381661/Creating-Zip-Files-Easily-in-NET
自2014/2015以来ff。:使用Roslyn,整个框架库作为开源发布,因此AFAI理解它,您可以自由地从4.5类中提取代码(因为它应该不是系统特定的)并将其用作早期.NET框架的库。 也许这会比使用其他类提供一些许可优势 – 但这必须由您进行分析。