需要用 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);
    }
}

使用说明(超级简单)

  1. 直接复制代码到你的项目
  2. 运行 Main() 即可自动清理
  3. 默认规则:
    • 最后修改时间 判断
    • 保留 最近 30 天
    • 删除 30 天以前 的所有文件
    • 包含子文件夹

可自定义选项

你可以轻松修改:

// 保留15天
DateTime.Now.AddDays(-15);
// 不清理子文件夹
CleanFilesOlderThan30Days(path, false);
// 按创建时间判断(不常用)
if (fi.CreationTime < limitTime)

适合你的场景

  • 测试结果文件
  • 日志文件
  • 自动生成的报告
  • 定时清理目录

总结

  • 代码安全、带异常处理,不会因为一个文件删不掉就崩溃
  • 输出日志清晰,方便你查看删除了哪些
  • 完全适配你提供的路径:F:\OvlData\TestResult\Recipes\20\20251212143046

以上就是使用C#实现的自动清理过期文件的解决方案的详细内容,更多关于C#自动清理过期文件的资料请关注其它相关文章!

觉得上面的内容有用吗?快来点个赞吧!

点赞() 我要打赏

温馨提示 : 本站内容来自会员投稿以及互联网,所有源码及教程均为作者总结编辑,请大家在使用过程中提前做好备份,以免发生无法预知的错误,源码类教程请勿直接用于生产环境!

 可能感兴趣的文章