C# 刷新文件以获得另一个应用程序正在写入的文件的正确上次写入时间

C# Refresh File to get the correct lastwritetime for file which is being written by another application

首先感谢您的帮助。

我正在编写一个 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);

谢谢

您可以使用列表的forEach功能。它不在 IEnumerable 但它确实有效:

var listOfFilesInSpecifiedPeriod = directory.GetFiles().ToList();
listOfFilesInSpecifiedPeriod.forEach(file => file.Refresh());
listOfFilesInSpecifiedPeriod = listOfFilesInSpecifiedPeriod.Where(file => file.LastWriteTime >= fromDate && file.LastWriteTime <= toDate).ToList();