你认为哪种方法是"最好的".
System.IO.Packaging命名空间?[我可以针对框架3.5; 最好=最容易设计,实施和维护.
我最感兴趣的是你认为所选方法最好的原因.
Gre*_*ean 23
我一直使用SharpZipLib
忘了原因部分:主要是因为它已经存在了很长时间.它有详细记录,并具有直观的API.如果你是那种类型的东西,它还是开源的.
Che*_*eso 16
DotNetZip使用起来非常简单.我喜欢它,因为它是完全管理的 - 不需要shell交互.编程模型比shell更简单,更清晰.它也比SharpZipLib以及.NET 3.0中添加的Packaging类更简单.它是免费的,小型的,积极维护的.
它比一张海报提供的J#选项要好得多 - J#是一个巨大的运行时间和巨大的药丸吞下来获得ZIP支持.此外,J#支持正在停止.在J#上引入新依赖项可能不是一个好主意.
DotNetZip的示例代码:
try
{
using (ZipFile zip = new ZipFile(args[0], System.Console.Out))
{
zip.AddDirectory(args[1]); // recurses subdirectories
zip.Save();
}
}
catch (System.Exception ex1)
{
System.Console.Error.WriteLine("exception: " + ex1);
}
Run Code Online (Sandbox Code Playgroud)
DotNetZip适用于.NET v2.0,3.0,3.5以及Compact Framework v2.0和3.5.它可以处理ZIP文件,Unicode文件名,注释,密码.它有ZIP64以及自解压档案.它很快.试试吧.
She*_*dan 14
我意识到这是一个古老的问题,但我只是想我会添加一个更新的答案.如果您使用的是.NET 4.5,则可以使用新的内置ZipFile类以编程方式将多个文件轻松保存到zip文件夹中.
首先,您需要将文件准备到新文件夹(Directory.CreateDirectory,File.Move)中,然后您只需使用ZipFile.CreateFromDirectory方法(从链接页面改编):
string filePathOfNewFolder = @"c:\example\start";
string zipFilePath = @"c:\example\result.zip";
ZipFile.CreateFromDirectory(filePathOfNewFolder, zipFilePath);
Run Code Online (Sandbox Code Playgroud)