1、创建zip文件,并添加文件:
{
zip.BeginUpdate();
zip.Add( @" E:\文件1.txt " );
zip.Add( @" E:\文件2.txt " );
zip.CommitUpdate();
}
2、将文件夹压缩为文件
最后一个参数是使用正则表达式表示的过滤文件规则。CreateZip方法有3个重载版本,其中有目录过滤参数、文件过滤参数及用于指定是否进行子目录递归的一个bool类型的参数。
3、将文件添加到已有zip文件中
{
zip.BeginUpdate();
zip.Add( @" E:\test.doc " );
zip.CommitUpdate();
}
4、列出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文件中文件到指定目录下
7、常用类
ZipInputStream、GZipInputStream用于解压缩Deflate、GZip格式流,ZipOutputStream、GZipOutputStream用于压缩Deflate、GZip格式流。
StreamUtil类包含了几个Stream处理辅助方法:
1) Copy(Stream, Stream, Byte[])用于从一个Stream对象中复制数据到另一Stream对象。有多个重写。
2) ReadFully(Stream, Byte [])用于从Stream对象中读取所有的byte数据。有多个重写。
个人用到的一个类,给出:
using System;
using System.Collections.Generic;
using System.Text;
using ICSharpCode.SharpZipLib.Zip;
using ICSharpCode.SharpZipLib.GZip;
using System.IO;
namespace BtMaker.Common
{
class ZipClass
{
public static void CompressFolder(string zipFileName,string srcDir,bool recurse)
{
if (Directory.Exists(srcDir))
{
(new FastZip()).CreateZip(zipFileName, srcDir, true, "");
}
}
public static void Unzip(string zipFilePath, string unzipDirPath)
{
if (!File.Exists(zipFilePath))
{
return;
}
if (Directory.Exists(unzipDirPath))
{
(new FastZip()).ExtractZip(zipFilePath, unzipDirPath, "");
}
}
public static void CompressFile(string srcFile,string zipFile)
{
if (!File.Exists(srcFile))
{
return;
}
using (ZipFile zip = ZipFile.Create(zipFile))
{
zip.BeginUpdate();
FileInfo fi = new FileInfo(srcFile);
Directory.SetCurrentDirectory(fi.DirectoryName);
zip.Add(fi.Name);
zip.CommitUpdate();
}
}
}
}