FileGuanliContorller.cs 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Runtime.CompilerServices;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using System.Timers;
  8. using System.IO;
  9. using System.Net.Http.Headers;
  10. namespace BaiduYunBeiFen.Controller
  11. {
  12. //静态控制器
  13. public static class FileGuanliContorller
  14. {
  15. //初始化空计时器
  16. private static System.Timers.Timer MainTimer = new();
  17. //计时器初始运行间隔
  18. private static int InterValTime = 2000;
  19. private static string[]? FilePaths;
  20. private static FileInfo? FileTool;
  21. private static DirectoryInfo? DirectoryTool;
  22. private static string FileCheckPath = Directory.GetCurrentDirectory();
  23. private static int SaveTime = 48;
  24. //赋予计时器初始事件
  25. public static void InitTimeThread()
  26. {
  27. //初始化计时器
  28. MainTimer = new System.Timers.Timer(InterValTime);
  29. //赋予计时器事件
  30. MainTimer.Elapsed += OnTimedEvent;
  31. }
  32. //运行计时器
  33. public static void StartTimeThread()
  34. {
  35. //运行计时器
  36. MainTimer.Start();
  37. }
  38. //停止计时器
  39. public static void StopTimeThread(string Path)
  40. {
  41. //停止计时器
  42. MainTimer.Stop();
  43. }
  44. //修改计时器运行间隔
  45. public static void ChangeValTime(int ValTime)
  46. {
  47. //停止计时器
  48. MainTimer.Stop();
  49. //计时器重新初始化
  50. MainTimer = new System.Timers.Timer(ValTime);
  51. //计时器重新赋予事件
  52. MainTimer.Elapsed += OnTimedEvent;
  53. //计时器启动
  54. MainTimer.Start();
  55. }
  56. //修改保存时间
  57. public static void SetSavetime(int ChangeTimeValue)
  58. {
  59. SaveTime = ChangeTimeValue;
  60. }
  61. //查看现在的保存时间
  62. public static int GetSaveTime()
  63. {
  64. return SaveTime;
  65. }
  66. //修改监控的文件路径
  67. public static void SetFileCheckPath(string FileCheckPathValue)
  68. {
  69. FileCheckPath = FileCheckPathValue;
  70. }
  71. //查看现在监控的文件路径
  72. public static string GetFileCheckPath()
  73. {
  74. return FileCheckPath;
  75. }
  76. //计时器事件
  77. private static void OnTimedEvent(Object? source, ElapsedEventArgs e)
  78. {
  79. //获取目标路径下的全部文件路径
  80. FilePaths = Directory.GetFiles(FileCheckPath);
  81. //判断所有文件
  82. foreach (string item in FilePaths)
  83. {
  84. //初始化文件工具
  85. FileTool = new FileInfo(item);
  86. if((DateTime.Now-FileTool.CreationTime).TotalHours > SaveTime)
  87. {
  88. //FileTool.Delete();
  89. Console.WriteLine(item);
  90. }
  91. Console.WriteLine(FileTool.CreationTime.ToString());
  92. }
  93. }
  94. //获取路径下的全部文件,并删除空文件夹
  95. private static string[] GetFileInFolder(string FloderPath)
  96. {
  97. //获取当前路径下的全部文件夹
  98. string[] directories = Directory.GetDirectories(FloderPath);
  99. //获取当前路径下的全部文件
  100. string[] result = Directory.GetFiles(FloderPath);
  101. //判断当前路径下是否还有文件夹
  102. if (directories.Count() > 0)
  103. {
  104. //有文件夹,递归读取目录及子目录下的全部文件
  105. foreach (string d in directories)
  106. {
  107. result = result.Concat(GetFileInFolder(d)).ToArray();
  108. }
  109. }
  110. //如果文件夹下没有文件或者文件夹,删除此文件夹
  111. else if (result.Count() == 0 && directories.Count() == 0)
  112. {
  113. DirectoryTool = new DirectoryInfo(FloderPath);
  114. DirectoryTool.Delete();
  115. }
  116. return result;
  117. }
  118. }
  119. }