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

相关文章

  • Unity Shader模拟玻璃效果

    Unity Shader模拟玻璃效果

    这篇文章主要为大家详细介绍了Unity Shader模拟玻璃效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05
  • unity 如何获取button文本的内容

    unity 如何获取button文本的内容

    这篇文章主要介绍了unity 获取button文本的内容操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • c#:CTS类型系统

    c#:CTS类型系统

    CTS通用类型系统,是.Net中一套定义类型的规则。我们要掌握c#开发,首先要建立这个类型概念,只有知道c#的元素是什么类型,才能进行相关的分析和选材。
    2012-12-12
  • C#实现餐厅管理系统

    C#实现餐厅管理系统

    这篇文章主要为大家详细介绍了C#实现餐厅管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • C#支付宝扫码支付代码完整版

    C#支付宝扫码支付代码完整版

    这篇文章主要为大家详细介绍了C#支付宝扫码支付代码的完整版本,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • C#借助Spire.Doc创建Word文档的简易教程

    C#借助Spire.Doc创建Word文档的简易教程

    在现代软件开发中,生成文档自动化变得越来越重要,本文将介绍如何使用 Spire.Doc 创建一个简单的 Word 文档,涉及到标题、段落等文本元素的添加,希望对大家有所帮助
    2026-01-01
  • C# linq查询之动态OrderBy用法实例

    C# linq查询之动态OrderBy用法实例

    这篇文章主要介绍了C# linq查询之动态OrderBy用法,实例分析了C#采用linq方式查询时动态排序的相关技巧,需要的朋友可以参考下
    2015-06-06
  • C#中使用Lambda表达式自定义比较器实现两个列表合并实例

    C#中使用Lambda表达式自定义比较器实现两个列表合并实例

    这篇文章主要介绍了C#中使用Lambda表达式自定义比较器实现两个列表的合并实例,本文给出示例代码和运行效果,需要的朋友可以参考下
    2014-10-10
  • C# Newtonsoft.Json 的使用说明

    C# Newtonsoft.Json 的使用说明

    这篇文章主要介绍了C# Newtonsoft.Json 的使用说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • C#中4种深拷贝方法介绍

    C#中4种深拷贝方法介绍

    这篇文章主要介绍了C#中4种深拷贝方法介绍,本文讲解了利用反射实现、利用xml序列化和反序列化实现、利用二进制序列化和反序列化实现、利用silverlight DataContractSerializer实现,用于在silverlight 客户端使用等4种方法,需要的朋友可以参考下
    2015-06-06

最新评论