c# - 使用 System.IO.Packaging 生成 ZIP 文件

标签 c# .net zip

我知道通常建议使用 DotNetZip 或 SharpZipLib 库之类的库来使用 .net 语言(在我的例子中是 C#)创建 ZIP 文件,但使用 System 并非不可能 .IO.Packaging 生成 ZIP 文件。我认为尝试在 C# 中开发一个例程可能会很好,它可以做到这一点,而无需下载任何外部库。有没有人有一个或多个使用 System.IO.Packaging 生成 ZIP 文件的方法的好例子?

最佳答案

让我为你谷歌这个 -> 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);
                    }
                }
            }
        }              
    }
}

关于c# - 使用 System.IO.Packaging 生成 ZIP 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6386113/

相关文章:

c# - RabbitMQ C# API 中的消息接收事件

.net - 实际解决阶乘复杂性问题(调度程序)

c# - 波浪号 (~) 解析为站点根目录而不是 asp.net 中的应用程序根目录

python - 如何迭代解析 zipfile 对象

java - 如何在Maven中进行自定义打包?

c# - Entity Framework 更新记录问题(无法调用成员 'IsModified' 获取属性)

c# - MigraDoc 是否支持国家/地区字符/unicode 字符?

c# - 带日期的 Subsonic 3.0 ActiveRecord

c# - 在 C# 中不区分大小写地比较字符串

python - 使用 PPMD​​ 压缩的 Zip 文件,以编程方式解压缩