Directory.GetFiles сортировать по дате - PullRequest
11 голосов
/ 28 марта 2012

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

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

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

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

Ответы [ 2 ]

11 голосов
/ 28 марта 2012

как насчет ниже

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, время последнего доступа по умолчанию не обновляется . Это для улучшения производительности файловой системы

6 голосов
/ 28 марта 2012

если вы перейдете в каталог, вы можете сделать

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

Edit:
Увидел, что вы хотели изменить дату, можете сделать это с помощью f.LastWriteTime вместо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...