SharpZipLib 的使用
时间:2010-09-25 来源:大豆男生
1、创建zip文件,并添加文件:
using (ZipFile zip = ZipFile.Create(@"E:\test.zip")){
zip.BeginUpdate();
zip.Add(@"E:\文件1.txt");
zip.Add(@"E:\文件2.txt");
zip.CommitUpdate();
}
2、将文件夹压缩为文件
(new FastZip()).CreateZip(@"E:\test.zip", @"E:\test\", true, "");
最后一个参数是使用正则表达式表示的过滤文件规则。CreateZip方法有3个重载版本,其中有目录过滤参数、文件过滤参数及用于指定是否进行子目录递归的一个bool类型的参数。
3、将文件添加到已有zip文件中
using (ZipFile zip = new ZipFile(@"E:\test.zip")){
zip.BeginUpdate();
zip.Add(@"E:\test.doc");
zip.CommitUpdate();
}
4、列出zip文件中文件
using (ZipFile zip = new ZipFile(@"E:\test.zip")){
string list = string.Empty;
foreach (ZipEntry entry in zip)
{
list += entry.Name + "\r\n";
}
MessageBox.Show(list);
}
5、删除zip文件中的一个文件
{
zip.BeginUpdate();
zip.Delete(@"test.doc");
zip.Delete(@"test22.txt");
zip.CommitUpdate();
}
6、解压zip文件中文件到指定目录下
(new FastZip()).ExtractZip(@"E:\test.zip", @"E:\test\", "");
7、常用类
ZipInputStream、GZipInputStream用于解压缩Deflate、GZip格式流,ZipOutputStream、GZipOutputStream用于压缩Deflate、GZip格式流。
StreamUtil类包含了几个Stream处理辅助方法:
1) Copy(Stream, Stream, Byte[])用于从一个Stream对象中复制数据到另一Stream对象。有多个重写。
2) ReadFully(Stream, Byte [])用于从Stream对象中读取所有的byte数据。有多个重写。
8、重新编译 ICSharpCode.SharpZipLib.dll
最后我发现 ICSharpCode.SharpZipLib.dll (196K)有点大,能不能减少点呢?于是下载了源代码,用vs2008打开,把 BZip2,GZip,Tar 从项目中排除,再编译一下,呵呵,小了很多。现在ICSharpCode.SharpZipLib.dll 只有144K了。另外我还给ICSharpCode.SharpZipLib.dll 添加了强签名,以便强签名的程序集可以引用它。