var directory = new DirectoryInfo("C:\example");
string pattern = "LOG" + "_" + "NA" + "_" + "3465";
var validFiles = directory.GetFiles("*.xml");
List<string> list = new List<string>();
foreach (var item in validFiles)
{
string a = item.ToString();
if (a.Contains(pattern))
{
list.Add(a);
}
}
我想从指定的目录中获取具有上述模式的最新文件。我已经尝试了如上所述获取作为常见模式的文件,但是,我被困在<list>
中的文件中获取最新文件。非常感谢您的帮助。
答案 0 :(得分:1)
当您致电GetFiles
时使用该模式,然后按创建日期或您感兴趣的任何字段排序。OrderByDescending
确保最旧的文件位于最前面。
list = directory.GetFiles("*LOG_NA_3465*.xml")
.OrderByDescending(fi => fi.CreationTime)
.First();
在您的代码中,当您将结果存储在List<string>
时,您不再处理FileInfo
对象,并且您无法访问有关这些文件的任何详细信息。< / p>
答案 1 :(得分:1)
这是另一个步骤更多的步骤:
var d=new DirectoryInfo(@"C:\temp\logs");//Main Directory
var files=d.GetFiles("*.txt",SearchOption.AllDirectories);//Get .txt files
var patt=@"error-2016-09-"; //Pattern to search in file name
var matching = files.OrderByDescending(x=>x.CreationTimeUtc)
.Where(f => f.FullName.Contains(patt));
var latest=matching.First();//gets error-2016-09-29.txt