需要ICSharpCode.SharpZipLib.dll 网上有很多

先添加文件引用

再添加引用

  1. using ICSharpCode.SharpZipLib.Zip;
  1. #region 解压
  2. /// <summary>
  3. /// 功能:解压zip格式的文件。
  4. /// </summary>
  5. /// <param name="zipFilePath">压缩文件路径,全路径格式</param>
  6. /// <param name="unZipDir">解压文件存放路径,全路径格式,为空时默认与压缩文件同一级目录下,跟压缩文件同名的文件夹</param>
  7. /// <param name="err">出错信息</param>
  8. /// <returns>解压是否成功</returns>
  9. public bool UnZip(string zipFilePath, string unZipDir)
  10. {
  11. if (zipFilePath == string.Empty)
  12. {
  13. throw new System.IO.FileNotFoundException("压缩文件不不能为空!");
  14. }
  15.  
  16. if (!File.Exists(zipFilePath))
  17. {
  18. throw new System.IO.FileNotFoundException("压缩文件: " + zipFilePath + " 不存在!");
  19. }
  20.  
  21. //解压文件夹为空时默认与压缩文件同一级目录下,跟压缩文件同名的文件夹
  22.  
  23. if (unZipDir == string.Empty)
  24. unZipDir = zipFilePath.Replace(Path.GetFileName(zipFilePath), "");
  25. if (!unZipDir.EndsWith("//"))
  26. unZipDir += "//";
  27.  
  28. if (!Directory.Exists(unZipDir))
  29. Directory.CreateDirectory(unZipDir);
  30. try
  31. {
  32. using (ZipInputStream s = new ZipInputStream(File.OpenRead(zipFilePath)))
  33. {
  34. ZipEntry theEntry;
  35. while ((theEntry = s.GetNextEntry()) != null)
  36. {
  37. string directoryName = Path.GetDirectoryName(theEntry.Name);
  38. string fileName = Path.GetFileName(theEntry.Name);
  39. if (directoryName.Length > )
  40. {
  41. Directory.CreateDirectory(unZipDir + directoryName);
  42. }
  43. if (!directoryName.EndsWith("//"))
  44. directoryName += "//";
  45. if (fileName != String.Empty)
  46. {
  47. using (FileStream streamWriter = File.Create(unZipDir + theEntry.Name))
  48. {
  49. int size = ;
  50. byte[] data = new byte[];
  51. while (true)
  52. {
  53. size = s.Read(data, , data.Length);
  54. if (size > )
  55. {
  56. streamWriter.Write(data, , size);
  57. }
  58. else
  59. {
  60. break;
  61. }
  62. }
  63. }
  64. }
  65. }//while
  66. }
  67. }
  68. catch (Exception ex)
  69. {
  70. throw new Exception(ex.Message);
  71. }
  72. return true;
  73.  
  74. }//解压结束
  75.  
  76. #endregion

C# 解压的更多相关文章

  1. ZIP压缩算法详细分析及解压实例解释

    最近自己实现了一个ZIP压缩数据的解压程序,觉得有必要把ZIP压缩格式进行一下详细总结,数据压缩是一门通信原理和计算机科学都会涉及到的学科,在通信原理中,一般称为信源编码,在计算机科学里,一般称为数据 ...

  2. PostGIS(解压版)安装

    1.软件下载 postgresql-9.6.1-1-windows-x64-binaries.zip https://www.postgresql.org/download/windows/ post ...

  3. Winserver2012下mysql 5.7解压版(zip)配置安装

    一.安装 下载mysqlzip版本mysql不需要运行可执行文件,解压即可,下载zip版本mysqlmsi版本mysql双击文件即可安装,相对简单,本文不介绍此版本安装 配置环境变量打开环境变量配置页 ...

  4. linux 如何对文件解压或打包压缩

    tar命令用与对文件打包压缩或解压,格式: tar [选项] [文件] 打包并压缩文件: tar -czvf  压缩包名 .tar.gz 解压并展开压缩包: tar -xzvf  压缩包名 .tar. ...

  5. Linux下的解压命令小结

    Linux下常见的压缩包格式有5种:zip tar.gz tar.bz2 tar.xz tar.Z 其中tar是种打包格式,gz和bz2等后缀才是指代压缩方式:gzip和bzip2 filename. ...

  6. ICSharpCode.SharpZipLib 压缩、解压文件 附源码

    http://www.icsharpcode.net/opensource/sharpziplib/ 有SharpZiplib的最新版本,本文使用的版本为0.86.0.518,支持Zip, GZip, ...

  7. java代码解压zip文件

    import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.Inp ...

  8. mariadb 最新精简压缩版 win64 解压即用

    包含版本: mariadb-10.1.18-winx64 mariadb-5.5.53-winx64 32的没有压缩,估计用的人也比较少. 网盘链接: http://pan.baidu.com/s/1 ...

  9. MySQL解压版配置步骤

    mysql-5.7.14-winx64\bin配置到Path中 在解压路径下复制my-default.ini,修改名称为my.ini 在my.ini添加如下 [mysqld] basedir=C:\\ ...

  10. linux 安装mysql数据库——tar.gz包解压安装法

    mysql数据库有多种安装方式,本文只介绍在Linux服务器上的tar.gz包解压安装法, 先通过mysql官网或者网络资源下载 mysql-5.7.3-m13-linux-glibc2.5-x86_ ...

随机推荐

  1. css 选择器三

    2.4.10 浮动 浮动是css里面布局最多的一个属性,也是很重要的一个属性. float:表示浮动的意思.它有四个值. none: 表示不浮动,默认 left: 表示左浮动 right:表示右浮动 ...

  2. Loadrunner打不开浏览器以及卡死的各种问题

    Loadrunner11.0启动WebTours之总结1 第一次安装LR11时,安装安组件后没有对电脑进行重启,直接安装的LR112 安装完毕LR后,录制脚本时发现不能启动IE11.百度发现LR支持I ...

  3. String类——StringBuilder类的源码及内存分析(java)

    相同:底层均采用字符数组value来保存字符串 区别:String类的value数组有final 修饰,指向不可改,同时private 未提供修改value数组的方法.StringBuilder类的v ...

  4. Git的安装和创建版本库

    1.Git是分布式版本控制系统 2.安装Git 下载Git后,按照默认设置即可实现安装,安装完毕后点击git目录下的Git Bash 输入以下命令符: git config --global user ...

  5. MapReduce(一)

    MapReduce(一) 一.介绍 百度百科: MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算.概念"Map(映射)"和"Reduce(归约) ...

  6. MSSQL数据库后台进程(线程)

    与Oracle数据库类似,微软数据库产品MSSQL也有诸多后台进程来保证数据库系统的高效正常运转,由于MSSQL采用的是线程模型,应该叫做后台线程,为了大家易于理解,我们在暂且称之为后台进程,下面我们 ...

  7. ActiveMQ producer不断发送消息,会导致broker内存耗尽吗?

    http://activemq.apache.org/my-producer-blocks.html 回答了这个问题: ActiveMQ 5.x 支持Message Cursors,它默认把消息从内存 ...

  8. nodejs安装 淘宝镜像

    1◆ nodejs下载 2◆ 安装 3◆ 测试   4◆ 淘宝镜像 npm install -g cnpm --registry=https://registry.npm.taobao.org   5 ...

  9. python2.x 与 python3.x的区别

    从语言的源码角度: python2.x 的源码书写不够规范,且源码有重复,代码的复用率不高; python3.x 的源码清晰.优美.简单 从语言的特性角度: python2.x 默认为ASCII字符编 ...

  10. 适应c++ 新特性 - 与我 - 多年传统方式开发(新特性参考微软标准:https://msdn.microsoft.com/zh-cn/library/hh279654.aspx)

    公司同事都在积极使用c++的新特性,并对其赞不绝口,而自己一直做着传统的c++开发方式,到底这些新特性如何,又是怎么提高开发效率的,我依然在疑问当中,从同事的说法和实际代码操练里,确实在减少代码量,集 ...