我现在已经尝试了所有东西,但有些东西不起作用:
我需要在指定的目录和子目录中找到最新的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'的第一个参数。可以找到
我的想法,请帮助
答案 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的提示