如何使用.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();
繁花不似锦
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
目录为空。
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();
- 3 回答
- 0 关注
- 668 浏览
添加回答
举报
0/150
提交
取消