2010-02-10 325 views
10

我有一個包含幾個文件的目錄。我想壓縮這個文件夾到一個zip或tar.gz文件。我如何在C#中完成他的工作?如何使用.NET壓縮目錄?

+1

Duplicate:http://stackoverflow.com/questions/384955/best-easiest-way-to-create-zip-archive-in-net – 2010-02-12 08:52:57

回答

8

您可以使用DotNetZip Library。它有相當豐富和有用的功能。


編輯:

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)); 
    } 
} 
+0

剛剛添加了一些示例代碼的答案,希望你不介意。 – 2010-02-10 12:03:53

1

在我以前的工作中,我們使用#ziplib

8

考慮使用SharpZipLib。它支持C#中的GZip和ZIP壓縮。

有一個很好的教程here概述了你需要做什麼用SharpZipLib壓縮目錄。

0

這是一個good discussion,討論沒有任何第三方庫的可能性。我想你應該看看它。

這裏是一個樣本代碼large repository,可以幫助你在你的工作。好運..

2

我使用.NET Framework 3.5中引入的System.IO.Packaging命名空間。我決定就用它,因爲它是基於.NET Framework基類且不需要第三方的代碼,炸燬代碼的大小..

here's#2另一篇關於此問題的

而且here's命名空間和ZipPackage聲明/說明@MSDN

希望幫助

基督教

0

,GZIP是微軟Framework 2.0的ONW的一部分ARD。 它在System.IO.Compression命名空間下稱爲GZipStream

要使用此類壓縮目錄,您必須創建一個包含文件集合的可序列化類(例如Directory)。

Files類將包含文件名和文件流以從文件讀取字節。 一旦你在目錄上應用GZip,它將逐一讀取文件並將它們寫入GZipStream。

檢查此鏈接:http://www.vwd-cms.com/forum/forums.aspx?topic=18

0

的問題是很老,因此是正確答案。

自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: 隨着羅斯林整個框架庫已作爲開源的,所以AFAI瞭解它,你可以自由地從4.5類中提取代碼(因爲它應該不是特定於系統的),並將它用作早期.NET框架的庫。也許這會比使用其他類提供一些許可優勢 - 但這必須由您來分析。