当前位置: 代码网 > it编程>编程语言>Asp.net > 使用C#实现的自动清理过期文件的解决方案

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

2026年03月31日 Asp.net 我要评论
需要用 c# 实现一个清理指定目录(f:\ovldata\testresult\recipes\20\20251212143046),只保留最近 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#自动清理过期文件的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com