为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用.NET查找目录中的最新文件,而不进行循环?

如何使用.NET查找目录中的最新文件,而不进行循环?

紫衣仙女 2019-08-16 16:55:50
如何使用.NET查找目录中的最新文件,而不进行循环?我需要在目录中找到最近修改过的文件。我知道我可以遍历文件夹中的每个文件并进行比较File.GetLastWriteTime,但有没有更好的方法可以在不循环的情况下执行此操作?
查看完整描述

3 回答

?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

这样的事情怎么样......


var directory = new DirectoryInfo("C:\\MyDirectory");

var myFile = (from f in directory.GetFiles()

             orderby f.LastWriteTime descending

             select f).First();


// or...

var myFile = directory.GetFiles()

             .OrderByDescending(f => f.LastWriteTime)

             .First();


查看完整回答
反对 回复 2019-08-16
?
繁花不似锦

TA贡献1851条经验 获得超4个赞

如果你想以递归方式搜索,你可以使用这段漂亮的代码:

public static FileInfo GetNewestFile(DirectoryInfo directory) {
   return directory.GetFiles()
       .Union(directory.GetDirectories().Select(d => GetNewestFile(d)))
       .OrderByDescending(f => (f == null ? DateTime.MinValue : f.LastWriteTime))
       .FirstOrDefault();                        }

只需按以下方式调用它:

FileInfo newestFile = GetNewestFile(new DirectoryInfo(@"C:\directory\"));

就是这样。返回FileInfo实例或null目录为空。


查看完整回答
反对 回复 2019-08-16
?
FFIVE

TA贡献1797条经验 获得超6个赞

扩展上面的第一个,如果要搜索某个模式,可以使用以下代码:


string pattern = "*.txt";

var dirInfo = new DirectoryInfo(directory);

var file = (from f in dirInfo.GetFiles(pattern) orderby f.LastWriteTime descending select f).First();



查看完整回答
反对 回复 2019-08-16
  • 3 回答
  • 0 关注
  • 641 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信