一、 添加引用

转存失败重新上传取消

二、引入命名空间

using System.IO;

using System.IO.Compression;

三、实现代码

#region .NET Framework 4.5 ZipArchive类 压缩、解压

/// <summary>

/// ZipArchive压缩

/// </summary>

/// <param name="str_ZipFilePath">压缩文件存放的路径(如:/UploadFiles/quber.zip)</param>

/// <param name="str_OldFilePath">压缩文件的上级文件夹名称路径(如:/UploadFiles/)</param>

/// <param name="bl_IsDeleteZip">是否首先删除已经存在的zip压缩包</param>

public static bool ZAZIP(string str_ZipFilePath, string str_OldFilePath, bool bl_IsDeleteZip)

{

bool bl_Result = false;

try

{

//删除已经存在的压缩包

DeleteFile(str_ZipFilePath);

//若压缩包的文件夹路径不存在,则创建

string str_CreateZipFilePath = str_ZipFilePath.Substring(0, str_ZipFilePath.Length - (str_ZipFilePath.Length - str_ZipFilePath.LastIndexOf("/")));

CreateFilePath(str_CreateZipFilePath);

string[] str_AllFileName = GetAllFileName(str_OldFilePath);

using (var zip = ZipFile.Open(System.Web.HttpContext.Current.Server.MapPath(str_ZipFilePath), ZipArchiveMode.Create))

{

if (str_AllFileName.Length > 0)

{

for (int i = 0; i < str_AllFileName.Length; i++)

{

zip.CreateEntryFromFile(System.Web.HttpContext.Current.Server.MapPath(str_OldFilePath) + str_AllFileName[i], str_AllFileName[i]);

bl_Result = true;

}

}

}

return bl_Result;

}

catch (Exception)

{

return bl_Result;

}

}

/// <summary>

/// ZipArchive解压

/// </summary>

/// <param name="str_UNZipFilePath">解压的文件路径(如:/UploadFiles/quber.zip)</param>

/// <param name="str_UNZipFileToPath">解压到的文件路径(如:/UploadFiles/UNZipFile/)</param>

/// <param name="IsDeleteFile">是否删除解压到的文件夹中已经存在的文件</param>

/// <returns></returns>

public static bool UNZAZIP(string str_UNZipFilePath, string str_UNZipFileToPath, bool IsDeleteFile)

{

bool bl_Result = false;

try

{

if (IsDeleteFile)

{

// 列出压缩压缩文件

using (FileStream zipFileToOpen = new FileStream(System.Web.HttpContext.Current.Server.MapPath(str_UNZipFilePath), FileMode.Open))

using (ZipArchive archive = new ZipArchive(zipFileToOpen, ZipArchiveMode.Read))

{

foreach (var zipArchiveEntry in archive.Entries)

{

DeleteFile(str_UNZipFileToPath + zipArchiveEntry.FullName);

}

}

}

ZipFile.ExtractToDirectory(System.Web.HttpContext.Current.Server.MapPath(str_UNZipFilePath), System.Web.HttpContext.Current.Server.MapPath(str_UNZipFileToPath));

bl_Result = true;

return bl_Result;

}

catch (Exception)

{

return bl_Result;

}

}

/// <summary>

/// 获取文件夹下的所有文件名称

/// </summary>

/// <param name="str_FilePath">文件夹路径名称(如:/UploadFiles/)</param>

/// <returns></returns>

public static string[] GetAllFileName(string str_FilePath)

{

string[] str_AllFileName = { };

try

{

DirectoryInfo di = new DirectoryInfo(System.Web.HttpContext.Current.Server.MapPath(str_FilePath));

FileSystemInfo[] dis = di.GetFileSystemInfos();

if (dis.Length > 0)

{

str_AllFileName = new string[dis.Length];

int i_Count = 0;

foreach (FileSystemInfo fitemp in dis)

{

str_AllFileName[i_Count] = fitemp.Name;

i_Count++;

}

}

return str_AllFileName;

}

catch (Exception)

{

return str_AllFileName;

}

}

/// <summary>

/// 创建文件夹

/// </summary>

/// <param name="str_FolderPath">/UploadFiles/</param>

public static void CreateFilePath(string str_FolderPath)

{

string str_Path = System.Web.HttpContext.Current.Server.MapPath(str_FolderPath);

if (!System.IO.Directory.Exists(str_Path))

System.IO.Directory.CreateDirectory(str_Path);

}

/// <summary>

/// 删除文件

/// </summary>

/// <param name="str_DataFilePath">/UploadFiles/name.txt</param>

public static void DeleteFile(string str_DataFilePath)

{

if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath(str_DataFilePath)))

System.IO.File.Delete(System.Web.HttpContext.Current.Server.MapPath(str_DataFilePath));

}

#endregion

四、 调用示例

bool bl_Result = ZAZIP("/UploadFiles/quber.zip", "/UploadFiles/", true);

bool bl_Result = UNZAZIP("/UploadFiles/quber.zip", "/UploadFiles/UNZipFile/", true);

参考资料:
http://www.cnblogs.com/haogj/archive/2012/11/17/2774733.html

.NET Framework 4.5 ZipArchive类压缩解压相关推荐

  1. Linux自学笔记 | 10 常用命令 - 压缩解压类

    Linux自学笔记 | 10 常用命令 - 压缩解压类 Linux自学笔记 | 01 文件系统和目录结构 Linux自学笔记 | 02 VIM编辑器的安装与使用 Linux自学笔记 | 03 Linu ...

  2. 【文件压缩解压工具类-含密码】

    文件压缩解压工具类-含密码 一.zip4j简介 二.zip4j工具类使用步骤 1.添加maven依赖 2.工具类代码 3.调用测试 三.结语 一.zip4j简介 zip4j功能比较强大,支持加密.解密 ...

  3. .Net Core 使用ZipFile类--文件的压缩解压

    NuGet引用官网自带的System.IO.Compression.ZipFile var filename = "测试压缩解压文件"; var path = Directory. ...

  4. 使用C#压缩解压文件

    为了便于文件在网络中的传输和保存,通常将文件进行压缩操作,常用的压缩格式有rar.zip和7z,本文将介绍在C#中如何对这几种类型的文件进行压缩和解压,并提供一些在C#中解压缩文件的开源库. 在C#. ...

  5. python压缩文件tar_python 实现tar文件压缩解压的实例详解

    python 实现tar文件压缩解压的实例详解 python 实现tar文件压缩解压的实例详解 压缩文件: import tarfile import os def tar(fname): t = t ...

  6. iOS zlib 压缩解压

    最近需要压缩解压问题,查找了一些资料 ZipArchive库,实现对文件的压缩解压缩,网上有资源,可以下载研究一下,对于一些冗余代码可以修改一下.资源链接http://download.csdn.ne ...

  7. php视频压缩技术,PHP 实现文件压缩解压操作的方法

    在php中,有时我们需要使用到压缩文件操作,压缩文件可以节省磁盘空间:且压缩文件更小,便于网络传输,效率高,下面我们就来了解php的压缩解压相关操作 在PHP中有一个ZipArchive类,专门用于文 ...

  8. Asp.net 2.0 C#实现压缩/解压功能

    Asp.net 2.0 C#实现压缩/解压功能 (示例代码下载) (一). 实现功能 对文件及目录的压缩及解压功能 (二). 运行图片示例 (三).代码 1. 压缩类   1/**//// <s ...

  9. java 7zip解压_Apache Commons Compress介绍-JAVA压缩解压7z文件

    7zip(下面简称7z)是由Igor Pavlov所开发的一种压缩格式,主要使用的压缩算法是LZMA/LZMA2.7z是一种压缩比非常高的格式,这与其压缩算法LZMA有直接关系,所以很多大文件都是用7 ...

  10. 用.NET 2.0压缩解压功能处理大型数据

    摘要 如果你的应用程序从未使用过压缩,那么你很幸运.而对于另一部分使用压缩的开发人员来说,好消息是,.NET 2.0如今提供了两个类来处理压缩和解压问题.本文正是想讨论何时以及如何使用这些有用的工具. ...

最新文章

  1. 王爽实验9.自己解读,代码注释很多!
  2. Hadoop学习之以伪分布模式部署Hadoop及常见问题
  3. Ubuntu系统安装(win7双系统)
  4. CCF-CSP认证201312-1(出现次数最多的数)
  5. 美团点评APP在移动网络性能优化的实践,吊打面试官系列!
  6. 开源java项目_请问有哪些开源java项目值得学习的?学习完了容易找工作的?
  7. idea引入本地jar包及打包
  8. 【摘抄】SLAM中的位姿
  9. 游戏开发最佳10个工具与技术方案
  10. 基于51单片机的数字电压表
  11. Deepin 系统下安装VMware并激活.
  12. 小狼毫五笔输入法设置
  13. JAVA后端应该学什么技术?
  14. Ubuntu20.04安装五笔、拼音混合输入法
  15. 计算机找网络共享盘快捷键,电脑共享快捷键不见了怎么办
  16. centos7 mysql启动后端口,centos安装mysql后3306端口不通_网站服务器运行维护
  17. 3.17 让你的小红书笔记排名更靠前的六个方法【玩赚小红书】
  18. 医疗项目(HIS)业务简单介绍
  19. CSS3 制作正方体
  20. 冯诺依曼 计算机名言,约翰.冯.诺依曼名言

热门文章

  1. scrapy分布式调度源码及其实现过程
  2. Unstated浅析
  3. 深入理解java:线程本地变量 java.lang.ThreadLocal类
  4. 3013C语言_输入输出
  5. centos7搭建smb服务
  6. Nginx限制访问次数和并发数
  7. IDEA中如何配置Tomcat和项目?
  8. BRVAH分组功能原理分析
  9. ubuntu系统VNC服务器安装配置
  10. Silverlight像素着色器编写简明指南 附送文字描边效果