当前位置: 首页 > news >正文

C# ZipArchive 加压解压zip文件

创建zip文件

using (var fileStream = new FileStream(saveZipName, FileMode.CreateNew))
{// 使用内存流创建压缩文件using (var archive = new ZipArchive(fileStream, ZipArchiveMode.Create, true)){var files = Directory.GetFiles(taskDir, "*", SearchOption.AllDirectories);foreach (var file in files){//相对路径var relativePath = Path.GetRelativePath(FileAndFolderConfig.CollectionSpaceFolder.Path, file);archive.CreateEntryFromFile(file, relativePath);}}
}

获取zip文件流,在内存中创建zip文件避免创建临时文件

using (var memoryStream = new MemoryStream())
{// 使用内存流创建压缩文件using (var archive = new ZipArchive(memoryStream, ZipArchiveMode.Create, true)){var files = Directory.GetFiles(taskDir, "*", SearchOption.AllDirectories);foreach (var file in files){//相对路径var relativePath = Path.GetRelativePath(FileAndFolderConfig.CollectionSpaceFolder.Path, file);var entry = archive.CreateEntry(relativePath, CompressionLevel.Optimal);using var entryStream = entry.Open();using var fileStream = File.OpenRead(file);await fileStream.CopyToAsync(entryStream);}}memoryStream.Position = 0; // 重置流位置
}

下载文件并解压

                 // 下载文件到内存流using (var memoryStream = new MemoryStream()){await taskFile.CopyToAsync(memoryStream);taskFile.Close();memoryStream.Position = 0; // 重置流位置using (var archive = new ZipArchive(memoryStream, ZipArchiveMode.Read)){foreach (var entry in archive.Entries){var entryOutputPath = Path.Combine(FileAndFolderConfig.CollectionSpaceFolder.Path, entry.FullName);// 如果是目录条目,创建目录if (string.IsNullOrEmpty(entry.Name)){Directory.CreateDirectory(Path.GetDirectoryName(entryOutputPath));continue;}// 确保父目录存在var parentDir = Path.GetDirectoryName(entryOutputPath);if (!string.IsNullOrEmpty(parentDir)){Directory.CreateDirectory(parentDir);}// 解压文件entry.ExtractToFile(entryOutputPath, overwrite: true);}}}

http://www.dtcms.com/a/573461.html

相关文章:

  • 律师怎么做网站只做正品的购物网站
  • 珠宝网站策划挂别人公司做网站可以吗
  • Nine.fun全球KOL合作计划|以现实娱乐为舞台,构建Web3文化共创生态
  • 面向 Spring Boot 的 JVM 深度解析
  • SCRM工具测评:助力企业微信私域运营的核心功能解析
  • Web3.js 全面解析
  • 企业微信AI聊天agent:优化企业微信客户运营的推荐工具
  • 怎么做文化传播公司网站wordpress免费企业
  • springboot+vue3+redis+sse 后端主动推送数据
  • 潍坊网站优化培训四川在线
  • Azure AI服务成本分析指南
  • OceanBase数据库SQL调优
  • ④使用 PPTSYNC.exe 与华为手机拍照制作 GIF 动画
  • OceanBase all-in-one 4.2.0.0 安装教程(CentOS 7/EL7 一键部署详细步骤)​
  • 环保网站建设方案wordpress前端后端
  • 如何给网站备案山东网站搭建有限公司
  • veereal将在中国推广微型led技术
  • 对话 NuttX 创始人Gregory Nutt——openvela 与 NuttX 的 “双向奔赴” 新范式
  • 河北省地图谷歌seo网站优化
  • 湘潭知名网站建设网站静态页面生成
  • 从EMS看分布式能源发展:挑战与机遇并存
  • Java接入飞书发送通知消息
  • Vue.js 基础教程:从入门到实践
  • .net实现秒杀商品(Redis高并发)
  • 解决phpstudy 8.x软件中php8.2.9没有redis扩展的问题
  • 【MCP系列】飞书MCP使用
  • 阜新网站设计淮北市矿务局工程建设公司网站
  • 攻克维吾尔语识别的技术实践(多语言智能识别系统)
  • [Windows] 漫画翻译工具Saber Translator2.5.1
  • 手术机器人智能控制系统基本课时项目化课件(2025.08.25)