删除超过某些天数的文件

the*_*man 25 c#

我想这是一个非常常见的要求,在一个应用程序中进行了大量的日志记录.我正在开发一个C#Windows应用程序.NET 3.5.

我的应用程序生成大量的日志文件,其当前日期放在文件名中,如此版本20091112.什么是删除早于30天的文件的最佳策略.我即将使用它的一种方法是遍历文件名,提取日期部分,转换为DateTime对象并与今天的日期进行比较.这是一个优雅的正则表达式解决方案:)?还是更好的东西?

Dar*_*rov 33

var files = new DirectoryInfo(@"c:\log").GetFiles("*.log");
foreach (var file in files)
{
    if (DateTime.UtcNow - file.CreationTimeUtc > TimeSpan.FromDays(30))
    {
        File.Delete(file.FullName);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • FileInfo对象不是很重 - 它们不是文件句柄或任何东西.例如,PowerShell将它们用于流经管道的目录条目. (2认同)

Per*_*rOl 10

更新.net 4.0:

var files = new DirectoryInfo(directoryPath).GetFiles("*.log");
foreach (var file in files.Where(file => DateTime.UtcNow - file.CreationTimeUtc > TimeSpan.FromHours(2))) {
     file.Delete();
}
Run Code Online (Sandbox Code Playgroud)