C#调用Ionic.Zip类压缩文件夹

Posted sl9981

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#调用Ionic.Zip类压缩文件夹相关的知识,希望对你有一定的参考价值。

Note:网上找到的资源记录一下

遗留问题:保存的zip文件含有多级目录,暂时未找到去除多级目录的方法

/// <summary>
/// 压缩ZIP文件
/// 支持多文件和多目录,或是多文件和多目录一起压缩
/// </summary>
/// <param name="list">待压缩的文件或目录集合</param>
/// <param name="strZipName">压缩后的文件名</param>
/// <param name="IsDirStruct">是否按目录结构压缩</param>
/// <returns>压缩文件地址</returns>

public static string CompressMulti(List<string> list, string strZipName, bool IsDirStruct)

string filePath = Base.staticValue.root + "/Temp/Fun/AttachAdd/";
try

using (ZipFile zip = new ZipFile(filePath + "文件.zip", Encoding.Default))//设置编码,解决压缩文件时中文乱码

foreach (string path in list)

string fileName = Path.GetFileName(path);//取目录名称
string currentDirectory = Directory.GetCurrentDirectory();
//如果是目录
Directory.SetCurrentDirectory(filePath); // 临时切换当前目录到 /Fun/Temp
//if (Directory.Exists(path))
//
// if (IsDirStruct)//按目录结构压缩
//
// zip.AddDirectory(filePath, fileName);
//
// else//目录下的文件都压缩到Zip的根目录
//
// if (Directory.Exists(path))
// zip.AddDirectory(path);// 恢复当前目录
//
//
// Com.Optlog.addErr(path, "path1" + path);
// zip.AddDirectory(path);
if (File.Exists(path))//如果是文件

// zip.AddFile(path);
zip.AddFile(@path);
// Com.Optlog.addErr(path, "path" + path);

Directory.SetCurrentDirectory(currentDirectory); // 恢复当前目录

zip.Save();//压缩
return filePath + "list.zip";


catch (Exception)

return "";

以上是关于C#调用Ionic.Zip类压缩文件夹的主要内容,如果未能解决你的问题,请参考以下文章

Ionic.Zip 提取文件并忽略密码

UWP Ionic zip lib 无压缩

Ionic.Zip ArgumentException(已添加具有相同密钥的项目)

C#中如何通过ZipFile类操作ZIP文件(压缩、解压)

C#工具类:使用SharpZipLib进行压缩解压文件

C#工具类:使用SharpZipLib进行压缩解压文件