C# 定期清理文件夹及其包含的文件

由于软件运行过程中频繁保存照片,导致磁盘容易爆满,所以需要定期清理文件。

以下示例是保留最近3天的数据,除此之外的文件夹及其包含的文件都清理掉。(注:保存数据的文件夹名称包含日期)

 1 int saveDays = 3; //保存天数,可根据实际需求定义
 2 string path = "D:\\Test"; //保存数据的路径
 3 var saveFileFolderList = new List<string>(); //保存哪些文件夹
 4 for (int i = 0; i < saveDays; i++)
 5 {
 6     var saveFile = DateTime.Now.AddDays(-i).ToString("yyyyMMdd");
 7     saveFileFolderList.Add(saveFile);
 8 }
 9 
10 //开启一个异步线程定期检查是否可以删除文件
11 Task.Run(() =>
12 {
13     while (true)
14     {
15         if (Directory.Exists(path))
16         {
17             DirectoryInfo di = new DirectoryInfo(path);
18             var fsiArr = di.GetFileSystemInfos(); //获取所有的文件、文件夹
19 
20             foreach (var fsi in fsiArr)
21             {
22                 if (fsi is DirectoryInfo) //判断是否文件夹
23                 {
24                     //判断是否在删除范畴内
25                     if (!saveFileFolderList.Exists(o => fsi.Name.Contains(o)))
26                     {
27                         DirectoryInfo delDi = new DirectoryInfo(fsi.FullName);
28                         delDi.Delete(true); //删除文件夹及文件
29                     }
30                 }
31 
32 
33             }
34         }
35 
36         Thread.Sleep(1000 * 60 * 60 * 6); //每隔6H检查一遍
37     }
38     
39 });

 

posted @ 2021-09-20 16:31  陈金灿  阅读(1097)  评论(0)    收藏  举报