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 "";
}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM