如何压缩文件夹中的所有文件?

9
我有一个文件夹"D:\folder",里面包含10个文件,需要将它们压缩成一个新的压缩包"D:\folder.zip"
目前我正在使用ICSharpCode.SharpZipLib,但这不是强制要求,其他解决方案也可以接受。
我遇到的问题是:当我尝试执行方法FileStream fs = File.OpenRead(@"D:\folder")时,由于访问指定路径而出现错误。
如何简单地压缩这些文件?

一个快速的谷歌搜索:http://www.codeproject.com/Articles/37887/C-Zip-Files-and-or-Folders - 或许它可以帮到你。 - Rick Kuipers
请参考以下链接了解如何读取特定文件夹中的所有文件:https://dev59.com/GW025IYBdhLWcg3wtobX。 - Joshua Drake
3
可能是在C#中压缩文件夹的重复问题。 - Kendall Frey
2个回答

23

是的,这个库比SharpLib更容易使用,点赞+1。 - Ash Burlaczenko
谢谢!你能告诉我这个 ZipFile 需要哪个程序集吗?据我所知,是 Ionic.Zip。对吗? - Matrosov Oleksandr
当我使用这个方法zip.AddDirectory(@"MyDocuments\ProjectX", "ProjectX");时,我得到了一个带有文件夹的归档文件。我该如何创建只包含源文件夹中我的文件的归档文件呢?谢谢! - Matrosov Oleksandr
1
zip.AddDirectory(@"MyDocuments\ProjectX", ""); 请将此目录添加到压缩文件中。 - Antonio Bakula

19

我也同意Antonio Bakula的建议,使用DotNetZip而不是SharpZipLib。

.NET 4.5包括新的ZipArchiveZipFile类来操作.zip文件。通过这种支持,您可以完成您要做的事情:

ZipFile.CreateFromDirectory(@"D:\Folder", @"Folder.zip");
作为附注,您出现错误的原因是尝试打开一个目录而不是文件。 File.OpenRead 用于以读取方式打开文件,因为您提供了目录,所以会出现错误。如果您想枚举特定文件夹内的文件或目录,则可以使用 Directory.EnumerateFilesDirectory.EnumerateDirectories

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接