使用C#实现的自动清理过期文件的解决方案
作者:StevenChen85
本文提供了一个用C#实现的自动清理过期文件的解决方案,代码可删除指定目录中超过30天的文件,支持子目录扫描,并包含完善的异常处理和日志记录功能,需要的朋友可以参考下
需要用 C# 实现一个清理指定目录(F:\OvlData\TestResult\Recipes\20\20251212143046),只保留最近 30 天文件,自动删除过期文件 的方法。给你写 完整可直接运行、健壮、带日志、可复用 的代码。
C# 实现:保留 30 天内文件,自动删除旧文件
功能说明
- 传入目录路径,自动扫描所有文件
- 判断文件最后写入时间(最常用)
- 超过 30 天的文件直接删除
- 支持子目录(可选开关)
- 带异常处理 + 控制台日志
- 适配你的路径:
F:\OvlData\TestResult\Recipes\20\20251212143046
完整代码(可直接复制运行)
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. 计算30天前的时间点
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. 遍历删除超过30天的文件
foreach (string file in files)
{
try
{
FileInfo fi = new FileInfo(file);
// 判断:最后修改时间 是否早于30天前
if (fi.LastWriteTime < limitTime)
{
fi.Delete();
deleteCount++;
Console.WriteLine($"已删除:{file}");
}
}
catch (Exception ex)
{
Console.WriteLine($"删除失败:{file},原因:{ex.Message}");
}
}
Console.WriteLine($"\n清理完成!共删除文件:{deleteCount} 个");
}
catch (Exception ex)
{
Console.WriteLine($"清理异常:{ex.Message}");
}
}
// ==================== 调用示例 ====================
public static void Main()
{
// 你的目标目录
string path = @"F:\OvlData\TestResult\Recipes\20\20251212143046";
// 执行清理(true = 包含子目录)
CleanFilesOlderThan30Days(path, true);
}
}使用说明(超级简单)
- 直接复制代码到你的项目
- 运行
Main()即可自动清理 - 默认规则:
- 按 最后修改时间 判断
- 保留 最近 30 天
- 删除 30 天以前 的所有文件
- 包含子文件夹
可自定义选项
你可以轻松修改:
// 保留15天 DateTime.Now.AddDays(-15); // 不清理子文件夹 CleanFilesOlderThan30Days(path, false); // 按创建时间判断(不常用) if (fi.CreationTime < limitTime)
适合你的场景
- 测试结果文件
- 日志文件
- 自动生成的报告
- 定时清理目录
总结
- 代码安全、带异常处理,不会因为一个文件删不掉就崩溃
- 输出日志清晰,方便你查看删除了哪些
- 完全适配你提供的路径:
F:\OvlData\TestResult\Recipes\20\20251212143046
以上就是使用C#实现的自动清理过期文件的解决方案的详细内容,更多关于C#自动清理过期文件的资料请关注脚本之家其它相关文章!
