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

时间:2015-12-26 10:53:33

标签: c# .net c#-4.0 file-io path-finding

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

我需要在指定的目录和子目录中找到最新的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'的定义没有扩展方法' LastWriteTime'接受类型' string'的第一个参数。可以找到

我的想法,请帮助

2 个答案:

答案 0 :(得分:1)

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

接下来,GetFiles()(和EnumerateFileSystemEntries()返回的内容)是文件系统对象的完整路径的集合,这就是您的第二个代码段无法编译的原因。尝试像

这样的东西
foreach(var fileInfo in Directory.EnumerateFileSystemEntries().Select(s => new FileInfo(s))

这可能也会失败(权限,EnumerateFileSystemEntries()返回目录路径等),但会让你前进。

答案 1 :(得分:0)

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

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的提示