基于ICSharpCode.SharpZipLib.Zip的压缩解压缩
原文:基于ICSharpCode.SharpZipLib.Zip的压缩解压缩
今天记压缩解压缩的使用,是基于开源项目ICSharpCode.SharpZipLib.Zip的使用。
一、压缩:
/// <summary>
/// 压缩
/// </summary>
/// <param name="sourceDirectory"></param>
/// <param name="targetZipName"></param>
/// <param name="recurse"></param>
/// <param name="filter"></param>
/// <returns></returns>
public static void CreateZip(string zipFileName, string sourceDirectory, bool recurse=true, string fileFilter="")
{
if (string.IsNullOrEmpty(sourceDirectory))
{
throw new ArgumentNullException("SourceZipDirectory");
}
if (string.IsNullOrEmpty(zipFileName))
{
throw new ArgumentNullException("TargetZipName");
}
if (!Directory.Exists(sourceDirectory))
{
throw new DirectoryNotFoundException("SourceDirecotry");
}
if (Path.GetExtension(zipFileName).ToUpper() != ".ZIP")
throw new ArgumentException("TargetZipName is not zip");
FastZip fastZip = new FastZip();
fastZip.CreateZip(zipFileName, sourceDirectory, recurse, fileFilter);
}
二、解压缩:
/// <summary>
/// 解压
/// </summary>
/// <param name="zipFileName"></param>
/// <param name="targetDirectory"></param>
/// <param name="fileFilter"></param>
public static void ExtractZip(string zipFileName, string targetDirectory, string fileFilter="")
{
if (string.IsNullOrEmpty(zipFileName))
{
throw new ArgumentNullException("ZIPFileName");
}
if (!File.Exists(zipFileName))
{
throw new FileNotFoundException("zipFileName");
}
if (Path.GetExtension(zipFileName).ToUpper() != ".ZIP")
{
throw new ArgumentException("ZipFileName is not Zip ");
}
FastZip fastZip = new FastZip();
fastZip.ExtractZip(zipFileName, targetDirectory, fileFilter);
}
三、添加文件至压缩文件中
/// <summary>
/// 添加文件到压缩文件中
/// </summary>
/// <param name="zipFileName"></param>
/// <param name="filesNames"></param>
public static void AddFileToZip(string zipFileName, List<string> filesNames)
{
if (string.IsNullOrEmpty(zipFileName))
{
throw new ArgumentNullException("ZipName");
}
if (!File.Exists(zipFileName))
{
throw new FileNotFoundException("ZipName");
}
if (Path.GetExtension(zipFileName).ToUpper() != ".ZIP")
{
throw new ArgumentException("ZipFileName is not Zip ");
}
if(filesNames==null||filesNames.Count<)
return;
using (ZipFile zFile = new ZipFile(zipFileName))
{ zFile.BeginUpdate(); foreach (string fileName in filesNames)
{
zFile.Add(fileName);
} zFile.CommitUpdate();
} }
四、移除压缩文件中的文件
/// <summary>
/// 移除压缩文件中的文件
/// </summary>
/// <param name="zipName"></param>
/// <param name="fileNames"></param>
public static void DeleteFileFromZip(string zipFileName, IList<string> fileNames)
{
if (string.IsNullOrEmpty(zipFileName))
{
throw new ArgumentNullException("ZipName");
}
if (Path.GetExtension(zipFileName).ToUpper() != ".ZIP")
{
throw new ArgumentException("ZipName");
}
if(fileNames==null||fileNames.Count<)
{
return ;
}
using (ZipFile zipFile = new ZipFile(zipFileName))
{
zipFile.BeginUpdate();
foreach(string fileName in fileNames)
{
zipFile.Delete(fileName);
}
zipFile.CommitUpdate();
}
}
以上是基于ICSharpCode.SharpZipLib.Zip的部分使用,当然还有许多地方需要学习的。ICSharpCode.SharpZipLib.Zip使用起来比较快速方便,不想GZip那样对文件进行压缩时,还要进行复杂的操作。
今天就写这么多吧。
基于ICSharpCode.SharpZipLib.Zip的压缩解压缩的更多相关文章
- 使用ICSharpCode.SharpZipLib.Zip实现压缩与解压缩
使用开源类库ICSharpCode.SharpZipLib.Zip可以实现压缩与解压缩功能,源代码和DLL可以从http://www.icsharpcode.net/OpenSource/SharpZ ...
- C#调用 ICSharpCode.SharpZipLib.Zip 实现解压缩功能公用类
最近想用个解压缩功能 从网上找了找 加自己修改,个人感觉还是比较好用的,直接上代码如下 using System; using System.Linq; using System.IO; using ...
- 利用ICSharpCode.SharpZipLib.Zip进行文件压缩
官网http://www.icsharpcode.net/ 支持文件和字符压缩. 创建全新的压缩包 第一步,创建压缩包 using ICSharpCode.SharpZipLib.Zip; ZipOu ...
- C# ICSharpCode.SharpZipLib.dll文件压缩和解压功能类整理,上传文件或下载文件很常用
工作中我们很多时候需要进行对文件进行压缩,比较通用的压缩的dll就是ICSharpCode.SharpZipLib.dll,废话不多了,网上也有很多的资料,我将其最常用的两个函数整理了一下,提供了一个 ...
- C# ZipHelper C#公共类 -- ICSharpCode.SharpZipLib.dll实现压缩和解压
关于本文档的说明 本文档基于ICSharpCode.SharpZipLib.dll的封装,常用的解压和压缩方法都已经涵盖在内,都是经过项目实战积累下来的 1.基本介绍 由于项目中需要用到各种压缩将文件 ...
- 使用NPOI读取Excel报错ICSharpCode.SharpZipLib.Zip.ZipException:Wrong Local header signature
写了一个小程序利用NPOI来读取Excel,弹出这样的报错: ICSharpCode.SharpZipLib.Zip.ZipException:Wrong Local header signature ...
- C# 利用ICSharpCode.SharpZipLib.dll 实现压缩和解压缩文件
我们 开发时经常会遇到需要压缩文件的需求,利用C#的开源组件ICSharpCode.SharpZipLib, 就可以很容易的实现压缩和解压缩功能. 压缩文件: /// <summary> ...
- ICSharpCode.SharpZipLib.Zip
//压缩整个目录下载 var projectFolder = Request.Params["folder"] != null ? Request.Params["fol ...
- c# ICSharpCode.SharpZipLib.Zip实现文件的压缩
首先了解ZipOutPutStream和ZipEntry对象 ZipOutPutStream对象 如果要完成一个文件或文件夹的压缩,则要使用ZipOutputStream类.ZipOutputStre ...
随机推荐
- java基础---->摘要算法的介绍 (转)
数据摘要算法是密码学算法中非常重要的一个分支,它通过对所有数据提取指纹信息以实现数据签名.数据完整性校验等功能,由于其不可逆性,有时候会被用做敏感信息的加密.数据摘要算法也被称为哈希(Hash)算法. ...
- curl订单具体解释
为windows假设用户Cygwin模拟unix环境的话,不会有带curl命令,拥有设备,它建议使用Gow为了模拟,它已经自带curl工具,直接安装之后cmd使用环境curl命令可以,由于路径是自己主 ...
- 谈谈android反编译和防止反编译的方法(转)
谈谈android反编译和防止反编译的方法(转) android基于java的,而java反编译工具很强悍,所以对正常apk应用程序基本上可以做到100%反编译还原. 因此开发人员如果不准备开源自己的 ...
- poj3280(区间dp)
题目连接:http://poj.org/problem?id=3280 题意:给定一个长度为m(m<=2000)的小写字母字符串,在给定组成该字符串的n(n<=26)个字符的添加和删除费用 ...
- hdu4405(概率dp)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4405 题意:跳棋有0~n个格子,每个格子X可以摇一次色子,色子有六面p(1=<p<=6), ...
- Music Studio项目心得--JNI实现C++调用JAVA
这个项目是我參加内蒙古挑战杯的比赛项目,因为时间关系,我没时间实现OpenOMR开源项目由JAVA全然向C++的转换,经过我半个多月的尝试,我将OpenOMR中的1/3的代码改写成C++,只是非常快我 ...
- jQuery中的getJSON()
json文件是一种轻量级的数据交互格式.一般在jQuery中使用getJSON()方法读取. $.getJSON(url,[data],[callback]) url:json文件地址 data:可选 ...
- urses.ascii.ispunct(ch):
Nullege: A Search Engine for Python source code urses.ascii.ispunct(ch): TypeError: 'unicode' object ...
- MVAPI第一个版本架构图
MVAPI采用矢量与栅格结合的方式进行移动地图的显示. 进过几个月,目前终于可以完成基本的地图显示及操作功能.还有待实现的是各种性能及效果优化.3D地物等. 发一个1.0的架构图留存一下.(虽然目前还 ...
- mysql-定时调用存储过程
mysql定时调用存储过程,对表数据集表结构进行备份 存储过程实例: BEGIN DECLARE tname varchar(64); set @tname = CONCAT('RENAME TABL ...