- 代码
using ICSharpCode.SharpZipLib.Core;
using ICSharpCode.SharpZipLib.Zip;
/// <summary>
/// FastZip (快速压缩)
/// </summary>
/// <param name="IsbProgress">是否显示进度条</param>
/// <param name="SrcZipFileName">压缩文件名(包括路径)</param>
/// <param name="TgtFolderPath">目标文件夹路径</param>
/// <returns></returns>
public bool ShapeZipLib_ZipDirectory(bool IsbProgress,string SrcZipFileName,string TgtFolderPath)
{
bool iRet = true;
FastZipEvents events = null;
try
{
TimeSpan interval = TimeSpan.FromSeconds(1);
bool createEmptyDirs = false;
bool restoreDates = false;
bool restoreAttributes = false;
bool recurse = false;
string fileFilter = null;
string dirFilter = null;
events = new FastZipEvents();
events.ProcessDirectory = new ProcessDirectoryHandler(ProcessDirectory);
events.ProcessFile = new ProcessFileHandler(ProcessFile);
if (IsbProgress)
{
events.Progress = new ProgressHandler(ShowProgress);
events.ProgressInterval = interval;
}
FastZip fastZip = new FastZip(events);
fastZip.CreateEmptyDirectories = createEmptyDirs;
fastZip.RestoreAttributesOnExtract = restoreAttributes;
fastZip.RestoreDateTimeOnExtract = restoreDates;
fastZip.CreateZip(SrcZipFileName, TgtFolderPath, recurse, fileFilter, dirFilter);
}
catch (Exception ex)
{
return iRet = false;
}
return iRet;
}
private void ProcessDirectory(object sender, DirectoryEventArgs e)
{
if (!e.HasMatchingFiles)
{
Console.WriteLine(e.Name);
}
}
private void ProcessFile(object sender, ScanEventArgs e)
{
this.m_ProcessFileName_New = e.Name;
if ( 0 != string.Compare(this.m_ProcessFileName_New, this.m_ProcessFileName_Old))
{
this.m_ProcessFileName_Old = this.m_ProcessFileName_New;
if (null != this.m_ProgresBar)
{
int value = 0;
Util.SetProcessValue(this.m_ProgresBar, value);
}
}
}
private void ShowProgress(object sender, ProgressEventArgs e)
{
try
{
if (null == this.m_ProgresBar) throw new Exception("进度条空件为空!");
int value = Convert.ToInt32(e.PercentComplete);
Util.SetProcessValue(this.m_ProgresBar, value);
}
catch(Exception ex)
{
string strErrMsg = ex.Message;
}
}
2 . ICSharpCode.SharpZipLibLib
地址