using System; using System.IO; using System.IO.Compression; //using SharpCompress.Archives; //using SharpCompress.Archives.Zip; //using SharpCompress.Common; using HZQR.Common; namespace ZipTool { public class ZipHelper { //public static void CompressFile(string sourceFile, string compressedFile) //{ // // 创建文件流 // using (FileStream sourceStream = new FileStream(sourceFile, FileMode.Open)) // { // // 创建压缩文件流 // using (FileStream compressedStream = File.Create(compressedFile)) // { // // 创建压缩流 // using (GZipStream compressor = new GZipStream( // compressedStream, CompressionMode.Compress)) // { // // 复制文件流到压缩流 // sourceStream.CopyTo(compressor); // } // } // } //} public static void CompressDirectory() { try { //待压缩的文件夹路径 string folderDir = Config.AppSettings.ZipDirectory; //压缩文件存放路径 string zipFileDir = Config.AppSettings.ZipFileDirectory; //压缩文件全路径 string zipFileName = zipFileDir + "\\" + DateTime.Now.ToString("yyyy年MM月dd日_HHmmss") + ".zip"; //开始删除历史压缩文件 foreach (string zipFileFullPath in Directory.GetFiles(zipFileDir)) { FileInfo fileInfo = new FileInfo(zipFileFullPath); if (fileInfo.LastWriteTime.Date < DateTime.Now.AddDays(Config.AppSettings.DeleteDays)) { LogUtil.WriteLog("开始删除文件:" + zipFileFullPath); fileInfo.Delete(); LogUtil.WriteLog("文件【" + zipFileFullPath + "】删除成功!"); } } //using (var archive = ZipArchive.Create()) //{ LogUtil.WriteLog("开始压缩文件夹:" + folderDir); ZipFile.CreateFromDirectory(folderDir, zipFileName); //将整个文件夹压缩为ZIP文件 // archive.AddAllFromDirectory(folderDir); // archive.SaveTo(zipFileName, CompressionType.Deflate); LogUtil.WriteLog("文件夹【" + folderDir + "】压缩成功!存放目录:" + zipFileName); //} LogUtil.WriteLog("开始删除文件夹:" + folderDir); DeleteDirectory(folderDir); LogUtil.WriteLog("文件夹【" + folderDir + "】删除成功!"); } catch (Exception ex) { LogUtil.WriteLog(ex); } } public static void DeleteDirectory(string folderDir) { foreach (string directoryPath in Directory.GetDirectories(folderDir)) { LogUtil.WriteLog("开始删除文件夹:" + directoryPath); DeleteDirectory(directoryPath); LogUtil.WriteLog("文件夹【" + directoryPath + "】删除成功!"); } foreach (string filePath in Directory.GetFiles(folderDir)) { LogUtil.WriteLog("开始删除文件:" + filePath); File.Delete(filePath); LogUtil.WriteLog("文件【" + filePath + "】删除成功!"); } Directory.Delete(folderDir); } } }