C#教程

关注公众号 jb51net

关闭
首页 > 软件编程 > C#教程 > C#自动清理过期文件

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

作者:StevenChen85

本文提供了一个用C#实现的自动清理过期文件的解决方案,代码可删除指定目录中超过30天的文件,支持子目录扫描,并包含完善的异常处理和日志记录功能,需要的朋友可以参考下

需要用 C# 实现一个清理指定目录(F:\OvlData\TestResult\Recipes\20\20251212143046),只保留最近 30 天文件,自动删除过期文件 的方法。给你写 完整可直接运行、健壮、带日志、可复用 的代码。

C# 实现:保留 30 天内文件,自动删除旧文件

功能说明

完整代码(可直接复制运行)

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)

适合你的场景

总结

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

您可能感兴趣的文章:
阅读全文