using System; using System.Collections.Generic; using System.Linq; using System.Runtime.CompilerServices; using System.Text; using System.Threading.Tasks; using System.Timers; using System.IO; using System.Net.Http.Headers; namespace BaiduYunBeiFen.Controller { //静态控制器 public static class FileGuanliContorller { //初始化空计时器 private static System.Timers.Timer MainTimer = new(); //计时器初始运行间隔 private static int InterValTime = 2000; private static string[]? FilePaths; private static FileInfo? FileTool; private static DirectoryInfo? DirectoryTool; private static string FileCheckPath = Directory.GetCurrentDirectory(); private static int SaveTime = 48; //赋予计时器初始事件 public static void InitTimeThread() { //初始化计时器 MainTimer = new System.Timers.Timer(InterValTime); //赋予计时器事件 MainTimer.Elapsed += OnTimedEvent; } //运行计时器 public static void StartTimeThread() { //运行计时器 MainTimer.Start(); } //停止计时器 public static void StopTimeThread(string Path) { //停止计时器 MainTimer.Stop(); } //修改计时器运行间隔 public static void ChangeValTime(int ValTime) { //停止计时器 MainTimer.Stop(); //计时器重新初始化 MainTimer = new System.Timers.Timer(ValTime); //计时器重新赋予事件 MainTimer.Elapsed += OnTimedEvent; //计时器启动 MainTimer.Start(); } //修改保存时间 public static void SetSavetime(int ChangeTimeValue) { SaveTime = ChangeTimeValue; } //查看现在的保存时间 public static int GetSaveTime() { return SaveTime; } //修改监控的文件路径 public static void SetFileCheckPath(string FileCheckPathValue) { FileCheckPath = FileCheckPathValue; } //查看现在监控的文件路径 public static string GetFileCheckPath() { return FileCheckPath; } //计时器事件 private static void OnTimedEvent(Object? source, ElapsedEventArgs e) { //获取目标路径下的全部文件路径 FilePaths = Directory.GetFiles(FileCheckPath); //判断所有文件 foreach (string item in FilePaths) { //初始化文件工具 FileTool = new FileInfo(item); if((DateTime.Now-FileTool.CreationTime).TotalHours > SaveTime) { //FileTool.Delete(); Console.WriteLine(item); } Console.WriteLine(FileTool.CreationTime.ToString()); } } //获取路径下的全部文件,并删除空文件夹 private static string[] GetFileInFolder(string FloderPath) { //获取当前路径下的全部文件夹 string[] directories = Directory.GetDirectories(FloderPath); //获取当前路径下的全部文件 string[] result = Directory.GetFiles(FloderPath); //判断当前路径下是否还有文件夹 if (directories.Count() > 0) { //有文件夹,递归读取目录及子目录下的全部文件 foreach (string d in directories) { result = result.Concat(GetFileInFolder(d)).ToArray(); } } //如果文件夹下没有文件或者文件夹,删除此文件夹 else if (result.Count() == 0 && directories.Count() == 0) { DirectoryTool = new DirectoryInfo(FloderPath); DirectoryTool.Delete(); } return result; } } }