使用C#实现的自动清理过期文件的解决方案

 更新时间:2026年03月31日 08:45:26   作者: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);
    }
}

使用说明(超级简单)

  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#自动清理过期文件的资料请关注脚本之家其它相关文章!

相关文章

  • C#泛型集合Dictionary<K,V>的使用方法

    C#泛型集合Dictionary<K,V>的使用方法

    这篇文章主要介绍了C#泛型集合Dictionary<K,V>的使用方法,本文讲解了Dictionary的多种操作方法,需要的朋友可以参考下
    2014-10-10
  • C#中Byte转换相关的函数

    C#中Byte转换相关的函数

    这篇文章主要介绍了C#中Byte转换相关的函数介绍,非常具有参考借鉴价值,特此分享到脚本之家平台供大家学习
    2016-05-05
  • c#的params参数使用示例

    c#的params参数使用示例

    这篇文章主要介绍了c#的params参数使用示例,需要的朋友可以参考下
    2014-04-04
  • C#对DataTable里数据排序的方法

    C#对DataTable里数据排序的方法

    在日常开发过程中,有一个DataTable集合,里面有很多字段,现在要求针对某一列进行排序,如果该列为数字的话,进行ASC即可实现,但是该字段类型为string,此时排序就有点不正确了
    2013-11-11
  • C#创建自定义控件及添加自定义属性和事件使用实例详解

    C#创建自定义控件及添加自定义属性和事件使用实例详解

    这篇文章主要给大家介绍了关于C#创建自定义控件及添加自定义属性和事件使用的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用C#具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-05-05
  • C# winform自定义翻页控件详解

    C# winform自定义翻页控件详解

    这篇文章主要为大家详细介绍了C# winform自定义翻页控件的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09
  • c#调用jar包的方法步骤(非常详细)

    c#调用jar包的方法步骤(非常详细)

    这篇文章主要给大家介绍了关于c#调用jar包的方法步骤,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • C#实现快速将数据写入Excel单元格

    C#实现快速将数据写入Excel单元格

    这篇文章主要为大家详细介绍了如何使用C#实现快速将数据写入Excel单元格,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-03-03
  • C#函数式编程中的递归调用之尾递归详解

    C#函数式编程中的递归调用之尾递归详解

    这篇文章主要介绍了C#函数式编程中的递归调用详解,本文讲解了什么是尾递归、尾递归的多种方式、尾递归的代码实例等内容,需要的朋友可以参考下
    2015-01-01
  • DevExpress中GridControl列转义的实现方法

    DevExpress中GridControl列转义的实现方法

    这篇文章主要介绍了DevExpress中GridControl列转义的实现方法,在项目开发中有一定的实用价值,需要的朋友可以参考下
    2014-08-08

最新评论