2025-03-28 09:49:56 +08:00

105 lines
3.6 KiB
C#

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);
}
}
}