C#学习教程:删除超过一定天数的文件我正在开发C#Windows应用程序.NET3.5。我的应用程序生成了很多日志文件,文件名中包含当前日期,例如这个版本20091112。删除超过30天的文件的最佳策略是什么。我将要使用它的一种方法是遍历文件名,提取日期部分,转换为DateTime对象并与今天的日期进行比较。这是一个优雅的正则表达式解决方案吗:)?或者更好的东西?varfiles=newDirectoryInfo(@"c:log").GetFiles("*.log");foreach(varfileinfiles){if(DateTime.UtcNow-file.CreationTimeUtc>TimeSpan.FromDays(30)){文件.Delete(file.FullName);}}.net4.0更新:varfiles=newDirectoryInfo(directoryPath).GetFiles("*.log");foreach(varfileinfiles.Where(file=>DateTime.UtcNow-file.CreationTimeUtc>TimeSpan.FromHours(2))){file.Delete();}stringdirectoryPath="/日志";//你的日志目录路径foreach(stringfilePathinDirectory.GetCreationTime(directoryPath)){如果(fileAge.Days>30){File.Delete(filePath);据我了解,您想使用文件名而不是修改时间。美好的。然后代码是这样的:foreach(stringfileinDirectory.GetFiles(path)){stringfileNameOnly=Path.GetFileNameWithoutExtension(file);DateTimefileDate=DateTime.ParseExact(fileNameOnly,"yyyyMMDD",CultureInfo.CurrentCulture);如果(DateTime.Now.Subtract(fileDate).TotalDays>MaxDays)File.Delete(file);}[在PowerShell中]您可以将以下内容粘贴到您的PS1文件中并使其成为管理脚本的一部分(如果适用):-param($path=$(throw"needtoindicatepath"),$daysToRetain=$(throw"需要注明保留多少天"))dir$path-r|?{([datetime]::UtcNow-$_.CreationTimeUtc).TotalDays-gt$daysToRetain}|删除编辑:如果您觉得使用文件时间不是正确的做法,您可以使用-match来解析名称以提取两个DateTime对象,这将为您提供一个TimeSpan对象,然后您可以检查它的TotalDays属性。我想不出比这更简单的事情了。以上就是C#学习教程:删除超过一定天数的文件共享的所有内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注——string[]files=Directory.GetFiles(path);foreach(stringfileinfiles){if(File.GetLastWriteTime(file)本文采集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除,如有转载请注明出处:
