使用 SharpZipLib 打包数据到 ZIP 文件
2023-04-18 14:12:28 时间
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();
}
}
}
}
相关文章
- 从模型复杂度角度来理解过拟合现象
- 拉格朗日乘数法,一种计算条件极值的方式
- elasticsearch高亮之highlight原理
- elasticsearch查询之大数据集分页查询
- elasticsearch之多索引查询
- 如何使用注解优雅的记录操作日志 | 萌新写开源 01
- elasticsearch支持大table格式数据的搜索
- 解析fiddler返回的部分数据。
- SpringBoot快速配置多数据源(整合MyBatis)
- WebSocket集群分布式改造:实现多人在线聊天室
- MongoDB之TextSearch简介
- 快速搭建Zookeeper和Kafka环境
- 【秒杀系统】秒杀系统实战(四)| 缓存与数据库双写一致性实战
- 【秒杀系统】秒杀系统实战(五)| 如何优雅的完成订单异步处理
- 缓存与数据库双写一致性 深度分析
- MySQL选错索引导致的线上慢查询事故
- MongoDB中的高级查询(二)
- MongoDB新增及查询数据(一)
- MongoDB安装及shell简介
- MongoDB基本概念