ICSharpCode.SharpZipLib.dll下载地址
1、压缩某个指定目录下日志,将日志压缩到CompressionDirectory文件夹中,并清除原来未压缩日志。
#region 压缩logs目录下日志
public static void CompresslogDic()
{
try
{
string logFilePath = AppDomain.CurrentDomain.BaseDirectory + "logs";
DirectoryInfo logsDic = new DirectoryInfo(logFilePath);
FileInfo[] bipLog = logsDic.GetFiles();
DateTime dt = DateTime.Now;
List logsInOneDay = new List();
for (int i = 0; i < bipLog.Length; i++)
{
if (bipLog[i].Name.Substring(bipLog[i].Name.Length - 3) != "zip")
{
logsInOneDay.Add(bipLog[i]);
}
}
if (logsInOneDay.Count > 0)
{
try
{
if (!Directory.Exists(logsDic.FullName + "\\CompressionDirectory"))
{
Directory.CreateDirectory(logsDic.FullName + "\\CompressionDirectory");
}
string compressFileName = dt.ToString("yyyy-MM-dd");
if (File.Exists(logsDic.FullName + "\\CompressionDirectory\\" + dt.ToString("yyyy-MM-dd") + ".zip"))
{
Guid guid = Guid.NewGuid();
compressFileName = compressFileName + "-" + guid.ToString();
}
compressFileName += ".zip";
Compress(logsInOneDay, logsDic.FullName + "\\CompressionDirectory\\" + compressFileName, 9, 100);
foreach (FileInfo fileInfo in logsInOneDay)
{
try
{
fileInfo.Delete();
}
catch (Exception e)
{
//错误信息记录处理
}
}
}
catch (Exception e)
{
//错误信息记录处理
}
}
}
catch (Exception e)
{
//错误信息记录处理
}
}
#endregion
2、压缩指定目录子目录下日志,将日志压缩到CompressionDirectory文件夹中,并清除原来未压缩日志。
#region 压缩logs子目录下日志
public static void CompresslogsDic()
{
try
{
string logFilePath = AppDomain.CurrentDomain.BaseDirectory + "logs";
DirectoryInfo logsDic = new DirectoryInfo(logFilePath);
FileInfo[] bipLog = logsDic.GetFiles();
DateTime dt = DateTime.Now;
DirectoryInfo[] subLosgDic = logsDic.GetDirectories();
foreach (DirectoryInfo bankDic in subLosgDic)
{
dt = DateTime.Now;
bipLog = bankDic.GetFiles();
List logsInOneDay = new List();
for (int i = 0; i < bipLog.Length; i++)
{
if (bipLog[i].Name.Substring(bipLog[i].Name.Length - 3) != "zip")
{
logsInOneDay.Add(bipLog[i]);
}
}
if (logsInOneDay.Count > 0)
{
try
{
if (!Directory.Exists(bankDic.FullName + "\\CompressionDirectory"))
{
Directory.CreateDirectory(bankDic.FullName + "\\CompressionDirectory");
}
string compressFileName = dt.ToString("yyyy-MM-dd");
if (File.Exists(bankDic.FullName + "\\CompressionDirectory\\" + dt.ToString("yyyy-MM-dd") + ".zip"))
{
Guid guid = Guid.NewGuid();
compressFileName = compressFileName + "-" + guid.ToString();
}
compressFileName += ".zip";
Compress(logsInOneDay, bankDic.FullName + "\\CompressionDirectory\\" + compressFileName, 9, 100);
foreach (FileInfo fileInfo in logsInOneDay)
{
try
{
fileInfo.Delete();
}
catch (Exception e)
{
//错误信息记录处理
}
}
}
catch (Exception e)
{
//错误信息记录处理
}
}
}
}
catch (Exception e)
{
//错误信息记录处理
}
}
#endregion
3、压缩文件
#region 压缩文件
///
/// 压缩文件
///
/// 要打包的文件列表
/// 目标文件名
/// 压缩品质级别(0~9)
/// 休眠时间(单位毫秒)
public static void Compress(List fileNames, string GzipFileName, int CompressionLevel, int SleepTimer)
{
ZipOutputStream s = new ZipOutputStream(File.Create(GzipFileName));
try
{
s.SetLevel(CompressionLevel); //0 - store only to 9 - means best compression
foreach (FileInfo file in fileNames)
{
FileStream fs = null;
try
{
fs = file.Open(FileMode.Open, FileAccess.ReadWrite);
}
catch
{
continue;
}
// 将文件分批读入缓冲区
byte[] data = new byte[2048];
int size = 2048;
ZipEntry entry = new ZipEntry(Path.GetFileName(file.Name));
entry.DateTime = (file.CreationTime > file.LastWriteTime ? file.LastWriteTime : file.CreationTime);
s.PutNextEntry(entry);
while (true)
{
size = fs.Read(data, 0, size);
if (size
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?