Przeglądaj źródła

20241225001 文件管理控制器功能完善

向羽 孟 8 miesięcy temu
rodzic
commit
d268c9aa55

+ 76 - 10
BaiduYunBeiFen/Controller/FileGuanliContorller.cs

@@ -13,51 +13,117 @@ namespace BaiduYunBeiFen.Controller
     //静态控制器
     public static class FileGuanliContorller
     {
-        //初始化计时器
-        static System.Timers.Timer MainTimer = new();
+        //初始化计时器
+        private static System.Timers.Timer MainTimer = new();
         //计时器初始运行间隔
-        static int InterValTime = 5000;
-        private static string CheckPath = "";
-        static string[]? FilePaths;
-        static FileInfo? FileTool;
+        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()
+        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)
         {
-            CheckPath = Directory.GetCurrentDirectory();
-            FilePaths = Directory.GetFiles(CheckPath);
+            //获取目标路径下的全部文件路径
+            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;
+        }
     }
 }

+ 8 - 0
BaiduYunBeiFen/Controller/PybyCheckController.cs

@@ -82,17 +82,24 @@ namespace BaiduYunBeiFen.Controller
         /// <returns></returns>
         private List<FileMessageModelClass> PareseMessage(List<string> FileList)
         {
+            //用来存储结果的队列
             List<FileMessageModelClass> Result = new();
+            //对传入的string队列进行解析
             FileList.ForEach(File => {
                 string[] strGetAllMessage = File.Split(' ');
+                //判定是否是文件信息string
                 if(strGetAllMessage.Count() == 6)
                 {
                     try
                     {
+                        //获取文件名后缀
                         string[] FileNameSplit = strGetAllMessage[1].Split(".");
                         string GetFileType = strGetAllMessage[0] == "D" ? "Folder" : FileNameSplit[FileNameSplit.Count() - 1];
+                        //获取文件大小
                         int GetFileSize = strGetAllMessage[0] == "D" ? 0 : Convert.ToInt32(strGetAllMessage[2]);
+                        //获取文件改动时间
                         DateTime GetFileTime = Convert.ToDateTime(strGetAllMessage[3] + strGetAllMessage[4]);
+                        //组合数据
                         Result.Add(new FileMessageModelClass()
                         {
                             MessageType = strGetAllMessage[0],
@@ -105,6 +112,7 @@ namespace BaiduYunBeiFen.Controller
                     }
                     catch
                     {
+                        //报错
                         Console.WriteLine("数据队列转换异常");
                         FileList.ForEach(File => { Console.WriteLine(File); });
                     }

+ 2 - 1
BaiduYunBeiFen/Program.cs

@@ -10,7 +10,8 @@ internal class Program
         PybyCheckController pybyClass = new PybyCheckController();
         List<FileMessageModelClass> fileMessages = pybyClass.CheckPathFile("/c bypy ls LuBo/377943_栗枯Likuu/2024_12_10");
         FileGuanliContorller.InitTimeThread();
-        FileGuanliContorller.StartTimeThread();
+        FileGuanliContorller.SetFileCheckPath("E:\\bypy\\Lubo");
+//        FileGuanliContorller.StartTimeThread();
         Console.ReadKey();
     }
 }