Извлечение списка файлов из каталога, но только подмножество, отфильтрованное по дате - PullRequest
0 голосов
/ 07 ноября 2011

Могу ли я, используя DirectoryInfo или даже с некоторым внешним API, извлекать файлы из каталога LARGE (10 тысяч файлов), отфильтрованного по дате создания (например, для извлечения только файлов, созданных СЕГОДНЯ).

IЯ прошу это, потому что загрузка всех файлов с использованием

di.GetFiles("*.wma")

длится в течение 10 секунд или более, и мне приходится использовать его несколько раз для поиска новых файлов.

FileSystemWatcher находится вневопрос, как я узнал, что без него гораздо лучше.

РЕДАКТИРОВАТЬ:

Память не проблема, ситуация в том, что я должен знать, какие файлы находятся в каталоге наданный момент.Я не могу уменьшить количество файлов, но похоже, что FindFirstFileEx может быть решением, если оно работает так, как рекламируется.

Ответы [ 2 ]

0 голосов
/ 07 ноября 2011

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

0 голосов
/ 07 ноября 2011

Вместо GetFiles попробуйте использовать EnumerateFiles - ни у одного из них нет фильтра даты, но перечисляемая версия должна вызывать меньшую нагрузку на память, поскольку результаты будут извлекаться только по одному во время итерации.

Возможно, вы захотите исследовать использование Windows Search API - насколько мне известно, оно допускает ограничения даты при поиске, поэтому должно подойти.

Реальное решение не состоит в том, чтобы иметь так много файлов в одном каталоге.

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