• 使用 SharpZipLib 打包数据到 ZIP 文件


    SharpZipLib 是一个优秀的开源的第三方压缩库,可以通过这个库将一些导出的文件打包到一个 ZIP 文件当中供用户下载。

    GitHub 地址:https://github.com/icsharpcode/SharpZipLib

    NuGet 地址:https://www.nuget.org/packages/SharpZipLib/

    具体关于库的介绍可以参考官方文档,不过也没有太多介绍的,直接引入库之后按 F12 可以看到其中的元数据,没几个方法,下面讲解一下基本用法:

    public class TestClass
    {
        public void TestMethod()
        {
            string _zipPath = Path.Combine("D:导出.zip");
            using (ZipFile zip = ZipFile.Create(_zipPath))
            {
                zip.BeginUpdate();
                // 这里 Add 方法接收两个参数, 分别是文件路径和实体名称
                zip.Add(_allPath, Path.GetFileName(_allPath));
                foreach (var item in _xlsFileNames)
                {
                    zip.Add(Path.Combine(_filePath, item), Path.GetFileName(item));
                }
                // 当然还有一个方法就是
                zip.AddDirectory("D:TempFiles");
                // 上面这个方法可以添加一个目录,会按照层级压缩里面的文件
                zip.CommitUpdate();
            }
        }
    }
    

    上面的方法适用于要压缩的文件已经存在,当然 SharpZipLib 也提供了一个 ZipStream 用于写入流数据。

    public void TestMethod2()
    {
        using (FileStream fs = File.OpenRead("D:\待压缩的文件.txt"))
        {
            byte[] buffer = new byte[fs.Length];
            fs.Read(buffer, 0, buffer.Length);
            fs.Close();
    
            using (FileStream ZipFile = File.Create("D:\压缩文件路径.zip"))
            {
                using (ZipOutputStream ZipStream = new ZipOutputStream(ZipFile))
                {
                    string fileName = "名称.txt";
                    ZipEntry ZipEntry = new ZipEntry(fileName);
                    ZipStream.PutNextEntry(ZipEntry);
                    // 设置压缩等级
                    ZipStream.SetLevel(5);
    
                    ZipStream.Write(buffer, 0, buffer.Length);
                    ZipStream.Finish();
                    ZipStream.Close();
                }
            }
        }
    }
    
  • 相关阅读:
    JOIN条件限制对结果记录的影响
    什么是linux?
    什么是操作系统?
    Internship settled!
    Python dict 调试技巧 —— 利用YAML存储dict内容
    c++ 异常处理
    C#可空类型
    C# 异常处理
    C#值类型与引用类型
    C# 类类型
  • 原文地址:https://www.cnblogs.com/myzony/p/9071026.html
Copyright © 2020-2023  润新知