如何在 C# 中用 SharpZipLib 进行 ZIP 压缩与解压(转)

转自:http://www.cftea.com/c/2008/04/A1FQ34RYSYNLFT47.asp

SharpZipLib 是一个免费的组件,可以利用它对 ZIP 等多种格式进行压缩与解压。

  • 本地下载 SharpZipLib 0.85.4;
  • 本地下载 SharpZipLib 0.85.4 源文件与示例;
  • 本地下载 SharpZipLib 0.85.4 帮助。

或者您也可以到官方网站下载最新版本:http://www.icsharpcode.net/OpenSource/SharpZipLib/Download.aspx

非常幸运的是,在这个版本中提供了 FastZip 类,可以非常方便地实现压缩与解压。

ICSharpCode.SharpZipLib.Zip.FastZip zip = new ICSharpCode.SharpZipLib.Zip.FastZip();
zip.CreateZip("C:\\foo.zip", "C:\\待压缩的文件夹", true, ""); //第三个参数表示是否压缩子文件夹
zip.ExtractZip("C:\\foo.zip", "C:\\压缩后存放的文件夹", "");

如果我们只想压缩目录中的一个或部分文件,或者我们只想解压文件中的一个或部分文件,怎么办呢?那就得把最后一个参数用上,它是字符串类型的正则表达式,比如只压缩 ini 文件用:"^.*(.ini)$"。关于正则表达式更多内容,请参见:正则表达式简介(4)。

另外,我们还提供了一个用 ZipInputStream 进行解压的示例,示例中压缩文件是一个仅包含一个 txt 文件的 zip 文件,仅作抛砖引玉。

using ICSharpCode.SharpZipLib.Zip;
using System.IO;

//……

ZipInputStream zipStream = new ZipInputStream(File.Open("C:\\foo.zip", FileMode.Open));

ZipEntry entry = zipStream.GetNextEntry();
while (entry != null)
{
if (!entry.IsFile)
{
continue;
}

FileStream writer = File.Create("C:\\foo.txt"); //解压后的文件

int bufferSize = 2048; //缓冲区大小
int readCount = 0; //读入缓冲区的实际字节
byte[] buffer = new byte[bufferSize];
readCount = zipStream.Read(buffer, 0, bufferSize);
while (readCount > 0)
{
writer.Write(buffer, 0, readCount);
readCount = zipStream.Read(buffer, 0, bufferSize);
}

writer.Close();
writer.Dispose();

entry = zipStream.GetNextEntry();
}

zipStream.Close();
zipStream.Dispose();

转载于:https://www.cnblogs.com/ziyouyong/archive/2009/08/29/1556237.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/381235.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux缓存文件用户权限错误,CVE-2019-11244漏洞到底该如何修复?--关于缓存文件权限设置...

2019年5月,Kubernetes社区(后面简称”社区“)修复了标号为CVE-2019-11244的安全漏洞,这个修复方案似乎并不彻底,于是有人发布Issue对此提出异议,希望提供进一步修复方案。虽然Kubernetes已经非常安全,但对于一些安全标…

用python计算ln函数_python-含参函数

#!/usr/local/bin/python3# -*- coding:utf-8 -*-#----------函数位置参数和关键字参数----------def test(x,y): #此处的 x,y为形参print(x)print(y)test(1,2) #位置参数调用-此处的 1,2为实参,且与形参一一对应test(y2,x1) #关键字调用&…

ASP.NET MEMBERSHIP的XML配置

做了一个MEMBERSHIP的测试&#xff0c;先记下来&#xff0c;以备后用&#xff01;JAVAEYE网站是不是被人攻击了啊。。怎么打不开。。晕。。我有好多文章都在里面啊。。都没有备份的。。。 <connectionStrings><add name"conn"connectionString"server.…

高中数学40分怎么办_2019年第35届全国高中数学联赛试题及参考答案

2019年第35届全国高中数学联赛考试已结束&#xff0c;本文收集整理本次数学联赛的试题和参考答案&#xff0c;以供大家了解参考。本次数学联赛由全国高中数学联赛组委会统一命题&#xff0c;共分为一试和二试。一试时间为80分钟&#xff0c;包括8道填空题(每题8分)和3道解答题(…

linux 关机 日志,centos7 异常关机了,怎么查看系统的异常日志?

centos7 异常关机了&#xff0c;怎么查看系统的异常日志?crash中也没有dump的文件.这是messages日志:Feb 26 11:14:03 moon systemd-logind: Removed session 11.Feb 26 11:14:56 moon systemd: Created slice user-0.slice.Feb 26 11:14:56 moon systemd: Starting Session 1…

一个把图片保存到SQL数据库的工具

因公司的业务需要,会把很多图片保存到数据库中.因此做了一个很简单的工具,把图片保存到SQL数据库中.1.可以连接到不同服务器上的SQL数据库,可以选择操作各个表;2.可以指定保存到数据库的图片格式(JPG or BMP);3.可以用windows图片和传真查看器预览图片.下载地址:一个把图片保存…

redis 哨兵_Redis哨兵机制的原理介绍

php中文网最新课程每日17点准时技术干货分享本篇文章给大家带来的内容是介绍Redis的哨兵机制&#xff0c;让大家了解哨兵机制的原理和如何实现。有一定的参考价值&#xff0c;有需要的朋友可以参考一下&#xff0c;希望对你有所帮助。概述Redis的复制有一个缺点&#xff0c;当主…

linux 编写完程序吗,linux下编写C++程序

注&#xff1a;本文写的内容全部在ubuntu12.04下完成。要在linux下写C程序&#xff0c;要懂的一点编译的知识。下面介绍一下。源代码->预处理器(负责将代码补充)->汇编程序(生成汇编语言)-> 目标程序(生成二进制文件)->链接器(链接文件)->可执行程序(生成执行程…

BoooLee pyretoolkit -- 一个基于python re模块的在线正则表达式测试工具

为了学习python re模块正则表达式&#xff0c;寻找了一些正则表达式工具&#xff0c;除了komodo捆绑的rx toolkit外&#xff0c;其他的测试工具都是基于.net或其他引擎的&#xff0c;语法上多少有点出入。 干错自己写一个&#xff0c;用了2天时间&#xff0c;python re googl…

随机生成从大到小排序python_随机快速排序(使用Python描述)

title代码复制自随机快速排序的实现-夜雨最萌.和快速排序一样呀&#x1f602;随机快速排序与快速排序的思路一样,差异就是取主元之前,随机快速排序多了一个步骤:而随机快速排序是随机取得一个元素,但是又会与最后一个元素交换位置.取得主元的下标位置实际上还是最后一个下标.快…

linux守护进程fifo,linux守护进程配置文件

syslogd 是一种守护进程&#xff0c;它负责记录(写到磁盘)从其它程序发送到系统的消息。这个服务尤其常被某些守护进程所使用&#xff0c;这些守护进程不会有另外的方法来发出可能有问题存在的信号或向用户发送消息。1.文件格式/etc/syslog.conf是syslog守护程序的配置文件.sys…

【大数据】NiFi 的基本使用

NiFi 的基本使用 1.NiFi 的安装与使用1.1 NiFi 的安装1.2 各目录及主要文件 2.NiFi 的页面使用2.1 主页面介绍2.2 面板介绍 3.NiFi 的工作方式3.1 基本方式3.2 选择处理器3.3 组件状态3.4 组件的配置3.4.1 SETTINGS&#xff08;通用配置&#xff09;3.4.2 SCHEDULING&#xff0…

Asp.net页面事件引发后台程序处理原理【转】

以前在ASP中&#xff0c;不存在事件处理&#xff0c;传统的处理方法是通过隐藏文本框来提交不同的参数进行区别用户的不同动作&#xff0c;或则用不同的URL查询字符串来区别。ASP.NET中出现了事件处理&#xff0c;让开发人员区分用户动作方便并简单了许多。 实际上&#xff0c;…

常用linux双机软件,双机热备软件_Windows与Linux双机热备软件有哪些

Windows与Linux双机热备软件有哪些众所周知&#xff0c;双机热备可以提供服务器高可用性&#xff0c;但linux操作系统部署双机热备开源软件即可&#xff0c;而Windows操作系统的需要付费的Rose。1、Rose HA通过Rose HA系统把两台服务器与磁盘阵列系统相连&#xff0c;操作系统、…

python datatime 平均值_python求数据的时间平均

#!/usr/bin/python# encoding: utf-8import refrom itertools import imap, ifilter# 定义正则表达式patt re.compile(r"""(?P\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}) # 日期时间\s*&#xff0c;\s* # 分隔符号(?P\d) # 数值""", re.I|re.…

加密和解密类

&#xfeff;usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Security.Cryptography;usingSystem.IO;usingSystem.Web;namespaceThewolfs.Framework.Text{ ///<summary>///加密类 ///</summary>publicclassTwE…

linux 如何打包分区文件,Linux基础------文件打包解包---tar命令,文件压缩解压---命令gzip,vim编辑器创建和编辑正文件,磁盘分区/格式化,软/硬链接...

作业一&#xff1a;1)将用户信息数据库文件和组信息数据库文件纵向合并为一个文件/1.txt(覆盖)cat /etc/passwd /etc/group > /1.txt2)将用户信息数据库文件和用户密码数据库文件纵向合并为一个文件/2.txt(追加)cat /etc/passwd /etc/shadow >> /2.txt3)将/1.txt、/2.…

python处理中文字符串_处理python字符串中的中文字符

# -*- coding:utf-8 -*-import sys,ostxta open(a.txt,r)str for line in txta:str line.strip().decode(utf-8)txta.close()for word in str:print word.encode(utf-8)直接输出&#xff0c;是会乱码的&#xff0c;得先解码&#xff0c;再编码。参考网址&#xff1a;http://…

继承之接口知识点和思考练习

知识点 接口是一种数据结构&#xff0c;它包含了一组函数型方法&#xff0c;通过这组数据结构&#xff0c;用户代码可以调用组件的功能。 访问修饰符 interface 接口名 { 接口体 } 接口声明时&#xff0c;注意一下几个方面&#xff1a; 1&#xff09;访问修饰符只能是new…

sqlserver大数据表操作慢_架构师必看!操作日志系统搭建秘技

​在Java开发中&#xff0c;我们经常会遇到一个棘手的问题&#xff1a;记录用户的操作行为。某些操作是相对简单的&#xff0c;我们可以逐条记录。但是某些操作行为却很难记录&#xff0c;例如编辑操作。在某一次操作中&#xff0c;用户可能编辑了对象A的几个属性&#xff0c;而…