使用DotNetZip包进行ZIP包的压缩和解压缩,DotNetZip可以通过Nuget管理器安装
public static class CompressHelper
{
/// <summary>
/// 压缩单个文件
/// </summary>
/// <param name="fileName">文件名</param>
/// <param name="compressedFilePath">压缩包保存路径</param>
/// <param name="aliasFileName">压缩包文件名称</param>
/// <param name="fileExtent">压缩包的扩展名</param>
/// <param name="encryptPassword">压缩密码</param>
public static void CompressFile(string fileName, string compressedFilePath, string aliasFileName,
string fileExtent = ".zip", string encryptPassword = "")
{
if (File.Exists(fileName) == false) throw new FileNotFoundException("未能找到当前文件!", fileName);
try
{
using (ZipFile zip = new ZipFile(Encoding.UTF8))
{
if (!string.IsNullOrEmpty(encryptPassword))
{
zip.Password = encryptPassword;
}
zip.AddFile(fileName, "");
if (!Directory.Exists(compressedFilePath))
{
Directory.CreateDirectory(compressedFilePath);
}
string savePath = Path.Combine(compressedFilePath, aliasFileName) + fileExtent;
zip.Save(savePath);
}
}
catch (Exception ex)
{
int a = 0;
}
}
/// <summary>
/// 压缩单个文件
/// </summary>
/// <param name="folderPath">文件夹名</param>
/// <param name="compressedFilePath">压缩包保存路径</param>
/// <param name="aliasFileName">压缩包文件名称</param>
/// <param name="fileExtent">压缩包的扩展名</param>
/// <param name="encryptPassword">压缩密码</param>
public static void CompressFolder(string folderPath, string compressedFilePath, string aliasFileName,
string fileExtent = ".zip", string encryptPassword = "")
{
if (!Directory.Exists(folderPath)) throw new FileNotFoundException("未能找到当前文件夹", folderPath);
try
{
using (ZipFile zip = new ZipFile(Encoding.UTF8))
{
if (!string.IsNullOrEmpty(encryptPassword))
{
zip.Password = encryptPassword;
}
zip.AddDirectory(folderPath, "");
if (!Directory.Exists(compressedFilePath))
{
Directory.CreateDirectory(compressedFilePath);
}
string savePath = Path.Combine(compressedFilePath, aliasFileName) + fileExtent;
zip.Save(savePath);
}
}
catch (Exception ex)
{
}
}
/// <summary>
/// 解压文件
/// </summary>
/// <param name="fileName">文件名</param>
/// <param name="deCompressedFilePath">解压后文件保存路径</param>
/// <param name="password">解压密码</param>
public static void DeCompressFile(string fileName, string deCompressedFilePath, string password = "")
{
if (File.Exists(fileName) == false) throw new FileNotFoundException("未能找到压缩文件!", fileName);
try
{
using (ZipFile zip = new ZipFile(fileName, Encoding.UTF8))
{
if (!string.IsNullOrEmpty(password))
{
zip.Password = password;
}
if (!Directory.Exists(deCompressedFilePath))
{
Directory.CreateDirectory(deCompressedFilePath);
}
zip.ExtractAll(deCompressedFilePath, ExtractExistingFileAction.OverwriteSilently);
}
}
catch (Exception ex)
{
}
}
}