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 });