using BZFAStandardLib; using Sunny.UI.Win32; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Timers; namespace MainForm.ClassFile.XiaomiClass { internal class MultiDirectoryCleanupService { private Timer _timer; private List _directoriesToClean; public MultiDirectoryCleanupService() { // 初始化需要清理的目录列表 _directoriesToClean = new List { GlobalContext.MqttDeviceStateDir,//mqtt日志 - 设备状态日志 GlobalContext.MqttInputBeginDir,//mqtt日志 - 节拍日志 GlobalContext.MqttOperateLogDir,//mqtt日志 - 用户操作日志 GlobalContext.MqttAlarmLogDir,//mqtt日志 - 故障日志日志 GlobalContext.MqttPassResultLogDir,//mqtt日志 - 过站结果日志 GlobalContext.MqttPassDetailLogDir,//mqtt日志 - 过站明细日志 GlobalContext.MqttFileUpLogDir,//mqtt日志 - 文件上传日志 GlobalContext.MqttFileBackupLogDir,//mqtt日志 - 文件备份 GlobalContext.MqttDeviceConfigLogDir, // mqtt日志 - 装备配置日志 GlobalContext.WorkLogDir // mqtt日志 - // 运行日志 }; // 设置定时器, 比如每天运行一次 (以毫秒为单位) //_timer = new Timer(24 * 60 * 60 * 1000); _timer = new Timer(1 * 60 * 60 * 1000); _timer.Elapsed += OnTimerElapsed; } private void OnTimerElapsed(object sender, ElapsedEventArgs e) { foreach (var directory in _directoriesToClean) { try { var files = Directory.GetFiles(directory); foreach (var file in files) { DateTime lastWriteTime = File.GetLastWriteTime(file); if ((DateTime.Now - lastWriteTime).TotalDays > GlobalContext.ClearLogDays) { File.Delete(file); string logPath = GlobalContext.MqttClearFileDir + "ClearFile" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; FileOperate.NewTxtFile(logPath, DateTime.Now + $"===>{file} 已被删除"); } } } catch (Exception ex) { // 记录错误信息或采取其他措施 Console.WriteLine($"无法清理目录 {directory}: {ex.Message}"); } } } public void Start() { _timer.Start(); } } }