使用System.IO.Packaging生成ZIP文件

Jez*_*Jez 12 .net c# zip

我知道DotNetZip或SharpZipLib库的喜欢,通常建议在.NET语言创建ZIP文件(在我的情况下,C#),但它不是不可能使用System.IO.Packaging生成的ZIP文件.我认为尝试在C#中开发一个可以执行此操作的例程可能会很好,而无需下载任何外部库.有没有人有一个System.IO.Packaging用于生成ZIP文件的方法或方法的好例子?

Ram*_*oza 31

让我谷歌这个 - > system.io.packaging + generate + zip

第一个链接 http://weblogs.asp.net/jongalloway//creating-zip-archives-in-net-without-an-external-library-like-sharpziplib

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);
                    }
                }
            }
        }              
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 真的你不能自己实现吗?:S (9认同)
  • 具有讽刺意味的是,我用google搜索"create zip System.IO.Packaging",它首先显示了这个帖子.你打破了它. (9认同)
  • 很好,谢谢你.只想提一下使用这段代码你必须添加对WindowsBase dll的引用才能使用System.IO.Packaging (5认同)
  • *"让我谷歌这个给你......"*哇,如果你尝试过,你会更加居高临下吗?这个答案的措辞方式只是[LMGTFY链接上面的一两步,Stack Overflow皱眉](https://meta.stackoverflow.com/questions/255397/lmgtfy-link-cant-be-added). (5认同)
  • "让我谷歌这个给你......"说真的?请阅读这个 !https://meta.stackexchange.com/questions/9953/could-we-please-be-a-bit-nicer-to-new-users你回答是正确的,谢谢,但你的行为太可怕了 - > downvote (2认同)

Hei*_*lze 10

在.NET Framework 4.5中,您可以在System.IO.Compression命名空间中使用新类.