基于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 ...
随机推荐
- MATLAB——scatter的简单应用
scatter可用于描绘散点图. 1.scatter(X,Y) X和Y是数据向量,以X中数据为横坐标,以Y中数据位纵坐标描绘散点图,点的形状默认使用圈. 样例: X = [1:10]; Y = X ...
- jQuery中常用的函数方法
jQuery中常用的函数方法总结 Ajax处理 load(url,[data],[callback]) url (String) : 待装入 HTML 网页网址. data (Map) : (可选) ...
- FOJ 1591 —— Coral的烦恼
#include<stdio.h> int main() { __int64 n,i,sum,l,r; while(scanf("%I64d",&n)!=EOF ...
- Matlab---串口操作---数据採集篇
matlab功能强大,串口操作也非常easy.相信看过下面两个实验你就能掌握咯! 開始吧! 实验1: 从电脑COM2口读取数据.并将数据保存在TXT文件里,方便数据分析,以下是M脚本: %名 称:Ma ...
- ORACLE中%TYPE和%ROWTYPE的使用
1 %TYPE说明 为了使一个变量的数据类型与还有一个已经定义了的变量(尤其是表的某一列)的数据类型相一致,Oracle提供了%TYPE定义方式.当被參照的那个变量的数据类型改变了之后,这个新定 ...
- 自编Ps教程—我的ps图片赞赏
上篇讲述了主要的ps概念和操作,这里不再讲述了,主要的操作学好了,其它的都简单,下面我会把我闲暇时间天马行空的小作品上穿,以供大家闲暇时间或者工作累了的时候赞赏! 以后还会在这里上传哦!喜欢就收藏吧! ...
- Boost中timer的简易用法
boost::asio::deadline_timer timer_; timer_(io_service), timer_.expires_from_now(boost::posix_time::s ...
- Little Sympathy for Bear Stearns : NPR
Little Sympathy for Bear Stearns : NPR Little Sympathy for Bear Stearns
- hdu1828(线段树——矩形周长并)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1828 分析:与面积不同的地方是还要记录竖的边有几个(num记录),并且当边界重合的时候需要合并(用lb ...
- 在ubuntu安装Phabricator(转)
前言: Phabricator是facebook团队进行codereview的一个工具,是基于php进行开发的.界面简洁优雅,是团队做代码评审的好帮手.个人认为,是当前最好的code review平台 ...