2012-05-17 128 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