2012-03-28 4 views
8

Я использую Directory.GetFiles для получения файлов из определенной папки. По умолчанию файлы из этой папки идут сортировкой по имени файла ie. в алфавитном порядке имени файла. Я хочу получить файлы в том порядке, в котором файлы изменены.Directory.GetFiles сортировать по дате

Я не могу использовать Directory.GetInfo, поскольку я хочу получить файлы, содержащие определенное ключевое слово. Пожалуйста, дайте мне знать, как мы можем получить файл, отсортированный по их измененной дате. Я использую следующий код

string[] arr1 = Directory.GetFiles("D:/TestFolder", "*"Test12"*"); 

Любая помощь будет принята с благодарностью.

ответ

10

что примерно ниже

DirectoryInfo di = new DirectoryInfo("D:\\TestFolder"); 
FileSystemInfo[] files = di.GetFileSystemInfos(); 
var orderedFiles = files.Where(f=>f.Name.StartsWith("Test12")) 
         .OrderBy(f => f.CreationTime) 
         .ToList(); 

вы можете заменить f.Name.StartWith с любой функцией строки от вашей потребности (.Contains и т.д.)

вы можете заменить f => f.CreationTime с f.LastWriteTime, чтобы получить модифицированную время, но имейте в виду, что начиная с Windows Vista, Последнее время доступа по умолчанию не обновляется. Это позволяет улучшить производительность файловой системы

+0

Как написать это в файлах VB. OrderBy (f => f.CreationTime) –

5

если вы меняете к информации каталога вы можете сделать

FileInfo[] files = new DirectoryInfo("path") 
         .GetFiles("filter") 
         .OrderBy(f => f.CreationTime) 
         .ToArray(); 

Edit:
Saw вы хотели модифицированы дату, может сделать это с f.LastWriteTime вместо

Смежные вопросы