我正在使用下面的代码删除超过10天的文件.有更简单/更聪明的方法吗?
string source_path = ConfigurationManager.AppSettings["source_path"];
string filename= ConfigurationManager.AppSettings["filename"];
var fileQuery= from file in Directory.GetFiles(source_path,filename,SearchOption.TopDirectoryOnly)
where File.GetCreationTime(file)<System.DateTime.Now.AddDays(-10)
select file;
foreach(var f in fileQuery)
{
File.Delete(f);
}
Run Code Online (Sandbox Code Playgroud)
那么我有两件事要改变:
DateTime 一次,而不是DateTime.Now反复重新评估where子句时,我不会使用查询表达式:所以我将查询部分重写为:
var cutoff = DateTime.Now.AddDays(-10);
var query = Directory.GetFiles(sourcePath, filename, SearchOption.TopDirectoryOnly)
.Where(f => File.GetCreationTime(f) < cutoff);
Run Code Online (Sandbox Code Playgroud)
另一种选择是使用DirectoryInfo和FileInfo:
var cutoff = DateTime.Now.AddDays(-10);
var path = new DirectoryInfo(sourcePath);
var query = path.GetFiles(filename, SearchOption.TopDirectoryOnly)
.Where(fi => fi.CreationTime < cutoff);
Run Code Online (Sandbox Code Playgroud)
(在.NET 4中,您可能也想使用它EnumerateFiles.)
| 归档时间: |
|
| 查看次数: |
1534 次 |
| 最近记录: |