0

我可以通过使用下面的这个来获得最新创建的;但我想要最新创建的特定模式,而不仅仅是最新创建的

 var directory = new DirectoryInfo("D:\\my_dir\\dir_1\\dir_2\\");
        var smf_log_name = directory.GetFiles().OrderByDescending(f => f.LastWriteTime).First();
4

2 回答 2

6

好吧,DirectoryInfo.GetFiles有一个重载,它接受一个模式参数

var directory = new DirectoryInfo("D:\\my_dir\\dir_1\\dir_2");
var smf_log_name = directory.GetFiles("*.txt").OrderByDescending(f => f.LastWriteTime).First();

注意传递的模式,如果没有指定模式的文件,序列将抛出一个InvalidOperationException

FileInfo result = null;
var directory = new DirectoryInfo("D:\\my_dir\\dir_1\\dir_2");
var list = directory.GetFiles("*.txt");
if(list.Count() > 0)
{
    result = list.OrderByDescending(f => f.LastWriteTime).First();
}
于 2012-12-20T22:48:20.147 回答
1

您可以在方法中使用搜索模式GetFiles

directory.GetFiles("myPattern").OrderByDescending(f => f.LastWriteTime).First();

SearchOption.AllDirectories如果您希望所有子目录都包含在搜索中,也可以使用。

directory.GetFiles("myPattern", SearchOption.AllDirectories).OrderByDescending(f => f.LastWriteTime).First();
于 2012-12-20T22:51:34.240 回答