使用C#實(shí)現(xiàn)的自動(dòng)清理過(guò)期文件的解決方案
需要用 C# 實(shí)現(xiàn)一個(gè)清理指定目錄(F:\OvlData\TestResult\Recipes\20\20251212143046),只保留最近 30 天文件,自動(dòng)刪除過(guò)期文件 的方法。給你寫(xiě) 完整可直接運(yùn)行、健壯、帶日志、可復(fù)用 的代碼。
C# 實(shí)現(xiàn):保留 30 天內(nèi)文件,自動(dòng)刪除舊文件
功能說(shuō)明
- 傳入目錄路徑,自動(dòng)掃描所有文件
- 判斷文件最后寫(xiě)入時(shí)間(最常用)
- 超過(guò) 30 天的文件直接刪除
- 支持子目錄(可選開(kāi)關(guān))
- 帶異常處理 + 控制臺(tái)日志
- 適配你的路徑:
F:\OvlData\TestResult\Recipes\20\20251212143046
完整代碼(可直接復(fù)制運(yùn)行)
using System;
using System.IO;
public class FileCleaner
{
/// <summary>
/// 清理目錄:保留最近30天的文件,刪除更早的文件
/// </summary>
/// <param name="targetDir">要清理的目錄</param>
/// <param name="includeSubDir">是否包含子文件夾</param>
public static void CleanFilesOlderThan30Days(string targetDir, bool includeSubDir = true)
{
try
{
// 1. 判斷目錄是否存在
if (!Directory.Exists(targetDir))
{
Console.WriteLine($"目錄不存在:{targetDir}");
return;
}
// 2. 計(jì)算30天前的時(shí)間點(diǎn)
DateTime limitTime = DateTime.Now.AddDays(-30);
Console.WriteLine($"保留【{limitTime:yyyy-MM-dd HH:mm:ss}】之后的文件");
// 3. 獲取所有文件
SearchOption searchOption = includeSubDir ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly;
string[] files = Directory.GetFiles(targetDir, "*.*", searchOption);
int deleteCount = 0;
// 4. 遍歷刪除超過(guò)30天的文件
foreach (string file in files)
{
try
{
FileInfo fi = new FileInfo(file);
// 判斷:最后修改時(shí)間 是否早于30天前
if (fi.LastWriteTime < limitTime)
{
fi.Delete();
deleteCount++;
Console.WriteLine($"已刪除:{file}");
}
}
catch (Exception ex)
{
Console.WriteLine($"刪除失?。簕file},原因:{ex.Message}");
}
}
Console.WriteLine($"\n清理完成!共刪除文件:{deleteCount} 個(gè)");
}
catch (Exception ex)
{
Console.WriteLine($"清理異常:{ex.Message}");
}
}
// ==================== 調(diào)用示例 ====================
public static void Main()
{
// 你的目標(biāo)目錄
string path = @"F:\OvlData\TestResult\Recipes\20\20251212143046";
// 執(zhí)行清理(true = 包含子目錄)
CleanFilesOlderThan30Days(path, true);
}
}使用說(shuō)明(超級(jí)簡(jiǎn)單)
- 直接復(fù)制代碼到你的項(xiàng)目
- 運(yùn)行
Main()即可自動(dòng)清理 - 默認(rèn)規(guī)則:
- 按 最后修改時(shí)間 判斷
- 保留 最近 30 天
- 刪除 30 天以前 的所有文件
- 包含子文件夾
可自定義選項(xiàng)
你可以輕松修改:
// 保留15天 DateTime.Now.AddDays(-15); // 不清理子文件夾 CleanFilesOlderThan30Days(path, false); // 按創(chuàng)建時(shí)間判斷(不常用) if (fi.CreationTime < limitTime)
適合你的場(chǎng)景
- 測(cè)試結(jié)果文件
- 日志文件
- 自動(dòng)生成的報(bào)告
- 定時(shí)清理目錄
總結(jié)
- 代碼安全、帶異常處理,不會(huì)因?yàn)橐粋€(gè)文件刪不掉就崩潰
- 輸出日志清晰,方便你查看刪除了哪些
- 完全適配你提供的路徑:
F:\OvlData\TestResult\Recipes\20\20251212143046
以上就是使用C#實(shí)現(xiàn)的自動(dòng)清理過(guò)期文件的解決方案的詳細(xì)內(nèi)容,更多關(guān)于C#自動(dòng)清理過(guò)期文件的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
C#中Byte轉(zhuǎn)換相關(guān)的函數(shù)
這篇文章主要介紹了C#中Byte轉(zhuǎn)換相關(guān)的函數(shù)介紹,非常具有參考借鑒價(jià)值,特此分享到腳本之家平臺(tái)供大家學(xué)習(xí)2016-05-05
C#對(duì)DataTable里數(shù)據(jù)排序的方法
在日常開(kāi)發(fā)過(guò)程中,有一個(gè)DataTable集合,里面有很多字段,現(xiàn)在要求針對(duì)某一列進(jìn)行排序,如果該列為數(shù)字的話,進(jìn)行ASC即可實(shí)現(xiàn),但是該字段類(lèi)型為string,此時(shí)排序就有點(diǎn)不正確了2013-11-11
C#創(chuàng)建自定義控件及添加自定義屬性和事件使用實(shí)例詳解
這篇文章主要給大家介紹了關(guān)于C#創(chuàng)建自定義控件及添加自定義屬性和事件使用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用C#具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05
C#實(shí)現(xiàn)快速將數(shù)據(jù)寫(xiě)入Excel單元格
這篇文章主要為大家詳細(xì)介紹了如何使用C#實(shí)現(xiàn)快速將數(shù)據(jù)寫(xiě)入Excel單元格,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-03-03
C#函數(shù)式編程中的遞歸調(diào)用之尾遞歸詳解
這篇文章主要介紹了C#函數(shù)式編程中的遞歸調(diào)用詳解,本文講解了什么是尾遞歸、尾遞歸的多種方式、尾遞歸的代碼實(shí)例等內(nèi)容,需要的朋友可以參考下2015-01-01
DevExpress中GridControl列轉(zhuǎn)義的實(shí)現(xiàn)方法
這篇文章主要介紹了DevExpress中GridControl列轉(zhuǎn)義的實(shí)現(xiàn)方法,在項(xiàng)目開(kāi)發(fā)中有一定的實(shí)用價(jià)值,需要的朋友可以參考下2014-08-08

