【发布时间】:2021-05-04 00:08:17
【问题描述】:
首先感谢您的帮助。
我正在编写一个 C# 应用程序,用于根据修改日期复制一些文件。 该程序大部分时间都在工作,除了处理由另一个应用程序编写的文件时。对于这些文件,我意识到文件的最后修改日期在我手动刷新之前不会更新。
我有以下代码可以解决,所有文件都首先刷新,确保修改日期在我存储到列表之前更新
DirectoryInfo directory = new DirectoryInfo(@"C:\Testing");
var listofallfile = directory.GetFiles();
var listOfFilesInSpecifiedPeriod = new List<FileInfo>();
foreach (var file in listofallfile)
{
file.Refresh();
if (file.LastWriteTime>= fromDate && file.LastWriteTime <= toDate)
{
listOfFilesInSpecifiedPeriod.Add(file);
}
}
但我想用更简单的线条表达这一点。有没有办法在下面的代码中重新设置文件修改日期?
DirectoryInfo directory = new DirectoryInfo(@"C:\Testing");
var listOfFilesInSpecifiedPeriod = directory.GetFiles()
.Where(file => file.LastWriteTime >= fromDate && file.LastWriteTime <= toDate);
谢谢
【问题讨论】:
-
不是您问题的答案,但您应该使用
EnumerateFiles而不是GetFiles -
感谢您的建议。是的,我现在明白 EnumerateFiles 在处理大量文件时效率更高。谢谢