80 lines
2.5 KiB
C#
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}");
|
|
}
|
|
}
|
|
}
|
|
}
|