需要用 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#自动清理过期文件的资料请关注代码网其它相关文章!
发表评论