Using System.IO.Packaging to generate a ZIP file

后端 未结 2 1598
Happy的楠姐
Happy的楠姐 2020-11-29 07:12

I know that the likes of the DotNetZip or SharpZipLib libraries are usually recommended for creating ZIP files in a .net language (C# in my case), but it\'s not impossib

相关标签:
2条回答
  • 2020-11-29 07:24

    let me google this for you -> system.io.packaging+generate+zip

    first link 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);
                        }
                    }
                }
            }              
        }
    }
    
    0 讨论(0)
  • 2020-11-29 07:33

    In .NET Framework 4.5 you can use the new classes in the System.IO.Compression namespace.

    0 讨论(0)
提交回复
热议问题