压缩 文件夹


1.使用系统自带的 using System.IO.Packaging;    需要引用WindowsBase.dll  (C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\WindowsBase.dll)

 
  

public bool PackageFolder(string folderName, string compressedFileName, bool overrideExisting)
{
if (folderName.EndsWith(@"\"))
folderName = folderName.Remove(folderName.Length - 1);
bool result = false;
if (!Directory.Exists(folderName))
{
return result;
}

if (!overrideExisting && File.Exists(compressedFileName))
{
return result;
}
try
{
using (Package package = Package.Open(compressedFileName, FileMode.Create))
{
var fileList = Directory.EnumerateFiles(folderName, "*", SearchOption.AllDirectories);
foreach (string fileName in fileList)
{

//The path in the package is all of the subfolders after folderName
string pathInPackage;
pathInPackage = Path.GetDirectoryName(fileName).Replace(folderName, string.Empty) + "/" + Path.GetFileName(fileName);

Uri partUriDocument = PackUriHelper.CreatePartUri(new Uri(pathInPackage, UriKind.Relative));
PackagePart packagePartDocument = package.CreatePart(partUriDocument, "", CompressionOption.Maximum);
using (FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read))
{
fileStream.CopyTo(packagePartDocument.GetStream());
}
}
}
result = true;
}
catch (Exception e)
{
throw new Exception("Error zipping folder " + folderName, e);
}

return result;
}


2.使用第三方dll   例如  ionic.zip.dll
 
  

/// <summary>
/// 压缩文件夹
/// </summary>
/// <param name="FilePath">需要压缩文件夹路径</param>
/// <param name="FileName">压缩后文件名</param>
/// <param name="SavePath">压缩后存放路径</param>
/// <param name="PassWord">压缩密码,null为无密码</param>
/// <returns>异常消息,成功返回null</returns>
public string SetZipFile(List<string> FilePath, string FileName, string SavePath, string PassWord)
{
try
{
ZipFile zipfile = new ZipFile(SavePath + "\\" + FileName + ".zip", Encoding.Default);
if (PassWord != string.Empty)
zipfile.Password = PassWord;
foreach (var path in FilePath)
{
zipfile.AddDirectory(path);
zipfile.Save();
}
}
catch (Exception ex)
{
return ex.ToString();
}
return null;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值