Files
6098/Cowain.Bake.Communication/FTP/FTPElapsedDelete.cs

80 lines
2.5 KiB
C#

using Cowain.Bake.Common;
using Cowain.Bake.Common.Core;
using System;
using System.IO;
using System.Timers;
using Unity;
namespace Cowain.Bake.Communication.FTP
{
//定时删除文件
public class FTPElapsedDelete
{
Timer timer;
string _deleteFilePath;
int _intervalDays;
public string Name { get; set; }
public IUnityContainer _unityContainer { get; set; }
public FTPElapsedDelete(IUnityContainer unityContainer)
{
_unityContainer = unityContainer;
}
public void Start(string filePath, int intervalDays)
{
_deleteFilePath = filePath;
_intervalDays = intervalDays;
CreateTimer();
}
void CreateTimer()
{
// 创建定时器并设置时间间隔为一天
//timer = new Timer();
timer = new Timer(TimeSpan.FromHours(12).TotalMilliseconds); //一天执行二次删除,一次就够了,怕晚上不上班
//timer.Interval = 10 * 1000; // 一个小时
timer.Elapsed += TimerElapsedDeleteFiles;
timer.Start();
}
public void Stop()
{
if (timer != null)
{
timer.Stop();
timer.Elapsed -= TimerElapsedDeleteFiles;
timer.Dispose();
timer = null;
}
}
//可配置定期删除日志文件
void TimerElapsedDeleteFiles(object sender, ElapsedEventArgs e)
{
if (Global.AppExit)
{
Stop();
}
string[] files = Directory.GetFiles(_deleteFilePath, "*", SearchOption.AllDirectories);
try
{
foreach (string file in files)
{
FileInfo fileInfo = new FileInfo(file); //后期有必要再多年是否上传属性,上传了就删除
TimeSpan timeDifference = DateTime.Now - fileInfo.CreationTime;
if (timeDifference.TotalDays >= _intervalDays)
{
File.SetAttributes(file, FileAttributes.Normal);
File.Delete(file); //"对路径“”的访问被拒绝"
}
}
}
catch (Exception ex)
{
LogHelper.Instance.Error($"删除文件失败,_deleteFilePath:{_deleteFilePath},异常:{ex.Message}");
}
}
}
}