Какой хороший способ найти последний созданный файл в папке в C #? - PullRequest
2 голосов
/ 23 июня 2009

У меня есть сетевая папка, которая может содержать до 10000 файлов (обычно около 5000).

Каким образом я могу получить путь к файлу последнего созданного файла в этой папке с помощью c #?

В настоящее время я использую нижеприведенное, но не знаю, был ли способ быстрее.

Спасибо.

DirectoryInfo di = new DirectoryInfo(xmlFileLocation);
var feedFiles = di.GetFiles("*.xml");
var sortedFeedFile = from s in feedFiles
                     orderby s.CreationTime descending
                     select s;

if(sortedFeedFile.Count() > 0){
    mostRecentFile = sortedFeedFile.First();
}

Ответы [ 4 ]

5 голосов
/ 23 июня 2009

Сортировка файлов занимает у вас O (nlogn) время. Если все, что вам нужно, - это последнее созданное, было бы быстрее просто просмотреть файлы и найти самое последнее --- O (n).

1 голос
/ 23 июня 2009

Я считаю, что ваш лучший шанс - подумать о создании вызова Win32 API - это может быть или не быть быстрее, но это может стоить исследовать. См. WIN32_FILE_ATTRIBUTE_DATA Структура , чтобы сделать это.

0 голосов
/ 23 июня 2009

Возвращает FileInfo или null, если файлов нет, без сортировки:

var feedFiles = di.GetFiles("*.xml");
FileInfo mostRecentFile = null;
if (feedFiles.Any())
{
    mostRecentFile = feedFiles
        .Aggregate((x, c) => x.CreationTime > c.CreationTime ? x : c);
}
0 голосов
/ 23 июня 2009

Это может помочь ... http://www.4guysfromrolla.com/articles/060403-1.2.aspx

...