Получить последний измененный файл без перечисления всех файлов - PullRequest
0 голосов
/ 22 января 2011

В c #, учитывая путь к папке, есть ли способ получить последний измененный файл без получения всех файлов? Мне нужно быстро найти папки, которые были обновлены через определенное время, и, если файл, который был последний раз изменен, раньше времени, я хочу полностью пропустить папку. Я заметил, что время последнего изменения папки не обновляется при обновлении одного из ее файлов, поэтому этот подход не работает.

Ответы [ 2 ]

0 голосов
/ 22 января 2011

Нет, именно поэтому Windows поставляется с индексированием для ускорения поиска. Файловая система NTFS не была разработана для быстрого поиска.

В любом случае вы можете отслеживать изменения файлов, что не сложно сделать. Если возможно позволить вашей программе работать в фоновом режиме и отслеживать изменения, это будет работать. Если вам нужна прошлая история, вы можете выполнить первоначальное сканирование только один раз, а затем построить свою иерархию из их. Пока ваша программа всегда запускается, она должна иметь текущий снимок и не должна выполнять медленное сканирование.

Вы также можете использовать поиск окон для поиска файлов. Если индексация доступна, то, вероятно, так быстро, как вы получите.

0 голосов
/ 22 января 2011

Попробуйте это.

DirectoryInfo di = new DirectoryInfo("strPath");
DateTime dt = di.LastWriteTime;

Тогда вы должны использовать

Directory.EnumerateFiles(strPath, "*.*", SearchOption.TopDirectoryOnly);

Затем зациклите вышеуказанную коллекцию и получите FileInfo () для каждого файла.

Я не вижу способа, как вы можете получить дату изменения файла без получения ссылки на FileInfo () в этом файле.

Я не думаю, что FileInfo получит этот файл, насколько я знаю.

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