推荐一个操作Zip文件的开源类库:DotNetZip (转)

DotNetZip 是一个短小易用的用来操作 zip 文件的 .NET 类库,支持.NET的任何语言,可很方便的创建,读取,和更新zip文件。而且还可以使用在.NETCompact Framework中。

下面是一些简单的例子:

1.加密压缩:

using (ZipFile zip = new ZipFile())
{
zip.Password = sPassword; //set pwd
zip.AddDirectory(sZipDir);
zip.Save(sSavePath + @"\" + sSaveName);
}

2.向压缩文件中添加:

using (ZipFile zip = new ZipFile("Backup.zip"))
{
zip.Password= "123456!";
zip.AddFile("ReadMe.txt");
zip.AddFile("7440-N49th.png");
zip.AddFile("2005_Annual_Report.pdf");
zip.Save();
}

3.解压缩到制定目录:

using (ZipFile zip = ZipFile.Read("D:\\test\\2007.zip"))
{
foreach (ZipEntry e in zip)
{
Console.WriteLine("file name:{0}", e.FileName);
Console.WriteLine(e.Comment);
e.Extract("D:\\test\\pwdata", true);  // overwrite == true
}
}

1.创建/更新压缩文件,zip文件存在则更新,不存在则创建

//注意设置编码,默认中文件名会乱码
using (ZipFile zip = new ZipFile(@"E:\test.zip", System.Text.Encoding.Default))
{
    zip.AddDirectory(
@"E:\test");//添加文件夹

    zip.AddFile(@"E:\房屋租赁协议.doc");//添加文件,文件不存在抛错FileNotFoundException
    zip.Save();
}

 

2.列出zip文件中所有的文件

using (ZipFile zip = ZipFile.Read(@"E:\test.zip", System.Text.Encoding.Default))
{
    
string list = string
.Empty;
    
foreach (ZipEntry entry in
 zip)
    
{
        list 
+= entry.FileName + "\r\n"
;
    }

    MessageBox.Show(list);
}

 

3.从zip文件中删除一个文件,注意无法直接删除一个文件夹

using (ZipFile zip = ZipFile.Read(@"E:\test.zip", System.Text.Encoding.Default))
{
    
//zip["房屋租赁协议.doc"] = null;

    zip.RemoveEntry("房屋租赁协议.doc");
    zip.Save();
}

 

4.从zip文件中解压出一个文件

using (ZipFile zip = ZipFile.Read(@"E:\test.zip", System.Text.Encoding.Default))
{
    zip[
"房屋租赁协议.doc"].Extract(@"E:\"true
);
}

 

5.从zip文件中解压全部文件

using (ZipFile zip = ZipFile.Read(@"E:\test.zip", System.Text.Encoding.Default))
{
    
foreach (ZipEntry entry in
 zip)
    
{
        entry.Extract(
@"E:\test_new"true
);
    }

}

 

其他详细的使用请参考:http://www.codeplex.com/DotNetZip

转自http://www.cnblogs.com/carysun/archive/2009/02/11/DotNetZip.html

原文地址:https://www.cnblogs.com/ceci/p/1404377.html