如何检索文件夹任何后代的最新写入时间?
我需要一个方法来返回在指定日期时间之后修改的所有文件的路径。我想我可以通过确保目录LastWriteTime在指定范围内来节省大量昂贵的磁盘读取,然后再遍历其文件和子目录。
这样做的原因是,当目录顶层中的文件发生更改时,文件夹的最后写入时间也会更新。但是,最后一次写入时间不会比文件的直接父级更远。换句话说,如果孙文件被改变,它的属性被更新,它的父亲文件夹也是如此,但不是祖父文件夹。
是否有另一个高级指标可以用来完成此操作,或者我是否必须求助于递归遍历每个文件夹,而不管上次更改时间如何?
这是目前的方法:
private void AddAllFilesOfAllSubdirsWithFilterToList(string dirPath, ref List<FileInfo> filesList, DateTime minDate)
{
// Return files in this directory level
foreach (string filePath in Directory.GetFiles(dirPath, "*.*", SearchOption.TopDirectoryOnly))
{
FileInfo fileInfo = new FileInfo(filePath);
if (fileInfo.LastWriteTimeUtc > minDate)
{
filesList.Add(fileInfo);
}
}
// Return recursive searches through sudirs
foreach (string subDirPath in Directory.GetDirectories(dirPath))
{
DirectoryInfo dirInfo = new DirectoryInfo(subDirPath);
if (dirInfo.LastWriteTimeUtc > minDate)
{
GetAllFilesOfAllSubdirsWithFilter(subDirPath, ref filesList);
}
}
}