You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改C#代码,基于文件名嵌入的时间戳删除文件

修改后的代码
public static void DeleteLogFiles(string sPath, DateTime dtDate, int iLogFileRetention)
{
    try
    {
        var cutoffDate = dtDate.Subtract(TimeSpan.FromDays(iLogFileRetention));
        var logFiles = new DirectoryInfo(sPath).GetFiles();
        
        (from f in logFiles
         let fileNameWithoutExt = Path.GetFileNameWithoutExtension(f.Name)
         let timestampPart = fileNameWithoutExt.Split('_').LastOrDefault() // 提取下划线后的时间戳部分
         where !string.IsNullOrEmpty(timestampPart) && timestampPart.Length == 14 // 确保是14位时间戳格式
         let isParsed = DateTime.TryParseExact(timestampPart, "yyyyMMddHHmmss", 
                     CultureInfo.InvariantCulture, DateTimeStyles.None, out var fileTimestamp)
         where isParsed && fileTimestamp < cutoffDate
         select f
        ).ToList().ForEach(f => f.Delete());
    }
    catch (Exception ex)
    {
        // 建议在此添加异常日志记录,便于排查删除失败问题
    }
}

核心逻辑说明

  1. 提取时间戳:先移除文件扩展名,再通过下划线分割文件名,取出后面的14位时间戳字符串。
  2. 时间解析适配:用TryParseExact严格按格式解析时间戳,代码中默认适配你提供的示例格式yyyyMMddHHmmss(对应20240309000024)。如果你的时间戳实际是MMddyyyyHHmmss格式(月-日-年-时分秒),直接把格式字符串改成"MMddyyyyHHmmss"即可。
  3. 异常防护:添加了空值、长度检查和解析成功判断,避免不符合格式的文件导致程序报错。

内容的提问来源于stack exchange,提问作者NoBullMan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 18:57:50