2012-05-17 117 views
9

的文件,我有一個文件夾"D:\folder"和此文件夾中我有10個文件,我需要壓縮到一個新的存檔"D:\folder.zip"如何壓縮文件夾中

目前我正在使用ICSharpCode.SharpZipLib但這不是強制性要求,所以其他解決方案是可以接受的。

我現在面臨的問題是,當我嘗試執行方法FileStream fs = File.OpenRead(@"D:\folder")我得到的,因爲訪問specifided路徑的錯誤。

如何以簡單的方式壓縮這些文件?

+0

快速谷歌搜索:http://www.codeproject.com/Articles/37887/C-Zip-Files-and-or-Folders - 也許可以幫助你。 –

+0

請參閱[如何閱讀特定文件夾內的所有文件](http://stackoverflow.com/questions/5840443/how-to-read-all-files-inside-particular-folder)。 [在C#郵編夾]的 –

+3

可能重複(http://stackoverflow.com/questions/905654/zip-folder-in-c-sharp) –

回答

20

DotNetZip但更易於SharpZipLib,例如壓縮和解文件夾中的所有文件的使用方法:

using (ZipFile zip = new ZipFile()) 
    { 
    zip.AddDirectory(@"MyDocuments\ProjectX", "ProjectX"); 
    zip.Save(zipFileToCreate); 
    } 

這是一個從這個頁面的例子:

http://dotnetzip.codeplex.com/wikipage?title=CS-Examples&referringTitle=Examples

+0

是的,這是一個更容易使用比SharpLib使用,1 –

+0

庫謝謝!你能說我這個ZipFile需要哪個程序集嗎? Ionic.Zip - 據我瞭解。正確? –

+0

程序集是Ionic.Zip.dll –

13

我也同意Antonio Bakula建議使用DotNetZip而不是SharpZipLib。

.NET 4.5包括新ZipArchiveZipFile類用於操縱.zip文件。有了這種支持你正在嘗試做的是通過以下步驟完成:

ZipFile.CreateFromDirectory(@"D:\Folder", @"Folder.zip"); 

作爲一個側面說明你的錯誤的原因是因爲你試圖打開一個目錄,而不是一個文件。 File.OpenRead用於打開文件以供讀取,因爲您提供了一個目錄,所以會出現錯誤。如果要枚舉特定文件夾中的文件或目錄,則可以使用Directory.EnumerateFilesDirectory.EnumerateDirectories