В зависимости от операционной системы, я предлагаю вам использовать службу индексирования, Windows Desktop Search или последнюю версию Windows Search.Это решает проблему поиска файлов по ключевым словам, решает проблемы с производительностью в отношении количества файлов в папке, масштабируется и легко расширяется.
Пример DSearch на http://msdn.microsoft.com/en-us/library/dd940335(VS.85).aspx делает почти то, что вы хотите, и это легко реализовать.
Например, если запрашивается миллион файлов и вам нужно переместить файл в подпапки для повышения производительности, вы можете просто создать папки и переместить файлы.Вам не нужно будет менять код.
Если вам нужно изменить способ применения ключевых слов, например, использовать ключевые слова в свойствах сводки файла, вам нужно всего лишь изменить запрос.
Для более поздних операционных систем вы делаетедаже не нужно устанавливать какое-либо программное обеспечение, потому что функция поиска является частью операционной системы и доступна через OleDB.Если вы хотите использовать Расширенный синтаксис запроса (AQS), Microsoft предоставляет типизированную библиотеку для доступа к интерфейсам COM, которая упрощает создание команды SQL для запроса базы данных индекса.
Честно говоря, все эти другие предложения о базах данных и т. Д. - пустая трата времени.
MSDN-поиск windows search в http://social.msdn.microsoft.com/Search/en-US?query=windows+search
Связанные технологии поиска до Поиск Windows в http://msdn.microsoft.com/en-us/library/bb286798(VS.85).aspx
Поиск миллионов файлов в одной папке будетнепомерно медленный. (См. мой ответ на Расчет размера файла каталога - как сделать это быстрее? для Расчет размера файла каталога - как сделать это быстрее? .
Я могу искать на моем жестком диске ~ 300 000 файлов для * tabcontrol.cs "менее чем за секунду. Первый запрос занимает около 4000 мс, а каждый запрос, используя другой поисковый запрос, после первогоодин занимает 300-600 мс.
- Я просто обноваот «Служба индексирования» до «Поиск Windows», и я могу выполнить поиск «filename: tabcontrol» за 3005 файлов размером более 58 ГБ за 1,25 секунды, а последующий поиск займет от 0,13 до 0,26 секунды.
См. Образец DSearch в http://msdn.microsoft.com/en-us/library/dd940335(VS.85).aspx, чтобы узнать, как легко это реализовать.
«Поиск на рабочем столе» в http://blogs.msdn.com/b/coding4fun/archive/2007/01/05/1417884.aspx
Поиск файла на жестком диске - это медленная и утомительная операция.Узнайте, как воспользоваться преимуществами API поиска и базы данных Windows Desktop для быстрого поиска файлов.Добавьте новые инновационные функции в свои приложения, используя возможности поиска, встроенные в Vista и доступные для Windows XP.