使用System.IO.Packaging生成一个ZIP文件
问题描述:
我知道通常建议使用DotNetZip或SharpZipLib库来创建.net语言的ZIP文件(本例中为C#),但它不是不可能使用System.IO.Packaging
生成ZIP文件。我认为可以尝试在C#中开发一个可以实现它的例程,而不需要下载任何外部库。有没有人有使用System.IO.Packaging
生成ZIP文件的方法的一个很好的例子?使用System.IO.Packaging生成一个ZIP文件
答
让我google一下你 - > System.IO.Packaging程序+生成+拉链
using System;
using System.IO;
using System.IO.Packaging;
namespace ZipSample
{
class Program
{
static void Main(string[] args)
{
AddFileToZip("Output.zip", @"C:\Windows\Notepad.exe");
AddFileToZip("Output.zip", @"C:\Windows\System32\Calc.exe");
}
private static void AddFileToZip(string zipFilename, string fileToAdd, CompressionOption compression = CompressionOption.Normal)
{
using (Package zip = System.IO.Packaging.Package.Open(zipFilename, FileMode.OpenOrCreate))
{
string destFilename = ".\\" + Path.GetFileName(fileToAdd);
Uri uri = PackUriHelper.CreatePartUri(new Uri(destFilename, UriKind.Relative));
if (zip.PartExists(uri))
{
zip.DeletePart(uri);
}
PackagePart part = zip.CreatePart(uri, "", compression);
using (FileStream fileStream = new FileStream(fileToAdd, FileMode.Open, FileAccess.Read))
{
using (Stream dest = part.GetStream())
{
fileStream.CopyTo(dest);
}
}
}
}
}
}
+0
当然,但这并不需要一个路径,并将其所有的目录和文件添加到ZIP中;必须手动指定单个文件。 – Jez 2011-06-17 13:27:14
好的,在阅读了一下之后,它看起来像使用System.IO.Packaging的尴尬并不是人们像鼠疫一样避免它的唯一原因;它也会在生成的每个压缩文件中生成一个愚蠢的[Content_Types] .xml文件,并且存在与其他zip文件客户端兼容性的严重问题。所以...我想我会使用DotNetZip。 :-) – Jez 2011-06-17 14:05:50