105 lines
3.6 KiB
C#
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);
|
|
}
|
|
}
|
|
} |