C# 在指定目录和子目录中查找最新创建的 *.txt 文件?

C# Find the newest created *.txt file in specified directory AND sub-directories?

我现在已经尝试了所有方法,但有些东西不起作用:

我需要在我指定的目录和子目录中找到最新的 Date Created *.txt 文件。

string tPath = "C:\MyDirectory";
string[] fDir = Directory.GetFiles(tPath, "*.txt",  SearchOption.AllDirectories); 
filePath = fDir[0];

添加,如下导致编译错误:

string[] fDir = Directory.GetFiles(tPath, "*.txt",  SearchOption.AllDirectories).OrderByDescending(f => f.LastWriteTime).First();             

错误 CS1061 'string' 不包含 'LastWriteTime' 的定义,并且找不到接受类型 'string' 的第一个参数的扩展方法 'LastWriteTime'

我没有想法,请帮忙

首先,Directory.GetFiles() 枚举文件系统对象的效率极低。 Directory.EnumerateFileSystemEntries() 以更优化的方式完成相同的工作。

接下来,GetFiles()(和 EnumerateFileSystemEntries(),就此而言)return 是文件系统对象的完整路径的集合,这就是为什么您的第二个代码段无法编译。试试像

foreach(var fileInfo in Directory.EnumerateFileSystemEntries().Select(s => new FileInfo(s))

这也可能会失败(权限、EnumerateFileSystemEntries() returning 目录路径等),但会让你继续。

感谢您的帮助,实际上找到了我自己问题的答案:

string tPath = "C:\MyDirectory";
filePath = Directory.EnumerateFiles(tPath, "*.txt", SearchOption.AllDirectories).OrderByDescending(File.GetCreationTime).First();

不同之处在于: OrderByDescending(File.GetCreationTime).First()

不是OrderByDescending(f => f.GetCreationTime).First()

ps 感谢您提供有关 .enumeratefiles

的提示