1、先到NuGet下载包SevenZipSharp
2、下载7z.dll文件放在dubug文价夹下面,可在官网下载,也可在网盘下载
链接:https://pan.baidu.com/s/1mfkse8hubwDYovCXX0xZhg
提取码:ix5w
2、文件压缩代码
var ulds = Path.GetFullPath(cfilename);
comstr = true;
var dllurl = Application.StartupPath + "\\7z.dll";//引入dll文件
SevenZipCompressor.SetLibraryPath(dllurl);
SevenZipCompressor cmp = new SevenZipCompressor();
cmp.Compressing += new EventHandler<ProgressEventArgs>(cmp_Compressing);//添加压缩监听
cmp.FileCompressionStarted += new EventHandler<FileNameEventArgs>(cmp_FileCompressionStarted);//压缩进度监听
cmp.CompressionFinished += new EventHandler<EventArgs>(cmp_CompressionFinished);//压缩完成监听
cmp.ArchiveFormat = (OutArchiveFormat)Enum.Parse(typeof(OutArchiveFormat), "Zip");//压缩为zip文件
cmp.CompressionLevel = CompressionLevel.Fast;//压缩档次
cmp.BeginCompressDirectory(ulds, czipfilename);//cfilename压缩的文件包包含后缀“.zip”,ulds需要压缩的文件夹或文件
3、监听事件
void cmp_Compressing(object sender, ProgressEventArgs e)
{
var Value = e.PercentDelta;
}
//监听获取压缩进度
void cmp_FileCompressionStarted(object sender, FileNameEventArgs e)
{
try
{
var plan= e.PercentDone.ToString();//压缩进度
}
catch (Exception ex)
{
}
}
/// <summary>
/// 压缩完成监听
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void cmp_CompressionFinished(object sender, EventArgs e)
{
//完成需要执行的事件
}