1. 程式人生 > 實用技巧 >定期刪除資料夾中的檔案——C#

定期刪除資料夾中的檔案——C#

下面是自定義的一個函式,引數分別為:資料夾名稱、檔案字尾、儲存天數

邏輯是獲取當前系統的時間,和檔案建立時間去作差,如果結果大於儲存天數,就刪除它

        /// <summary>
        /// 定期清除檔案
        /// </summary>
        /// <param name="fileDirect">資料夾</param>
        /// <param name="postFix">檔案字尾</param>
        /// <param name="saveDay">儲存天數</param>
private void DeleteFile(string fileDirect, string postFix, int saveDay) { DateTime nowtime = DateTime.Now; //獲取當前時間 string[] files = Directory.GetFiles(fileDirect, postFix, SearchOption.AllDirectories); //獲取該目錄下所有 .txt檔案 foreach (string file in files) { FileInfo fileInfo
= new FileInfo(file); TimeSpan t = nowtime - fileInfo.CreationTime; //當前時間 減去 檔案建立時間 int day = t.Days; if (day > saveDay) //儲存的時間 ; 單位:天 { File.Delete(file); //刪除超過時間的檔案 } } }

呼叫如下:

我把資料夾路徑存到ini檔案中,首先讀出路徑

同樣把儲存天數存到ini檔案中(存的是控制元件ridiobutton的索引值,具體操作點選這裡),然後讀出索引值再使用switch來解析索引值對應的天數

最後呼叫刪除檔案的函式,這裡刪除的是excel表格,注意格式為" *.xls ",*不能省略

 pathLast = @"\" + day + ".xls"; //檔名
            pathHeard = Ini.IniReadValue("配置檔案", "path"); //資料夾
            path = pathHeard + pathLast; //檔案路徑

            string deleteDay = Ini.IniReadValue("清除檔案", "day"); //定期刪除檔案天數
            int deleteDayValue = -1;
            switch (deleteDay)
            {
                case "4":
                    deleteDayValue = -1;
                    break;
                case "3":
                    deleteDayValue = 3;
                    break;
                case "2":
                    deleteDayValue = 7;
                    break;
                case "1":
                    deleteDayValue = 15;
                    break;
                case "0":
                    deleteDayValue = 30;
                    break;
                default:
                    break;
            }

            if (deleteDayValue >= 0)
            {
                DeleteFile(pathHeard, "*.xls", deleteDayValue);
            }