Какой самый быстрый способ для программы .Net проиндексировать все изображения на компьютере пользователя? - PullRequest
3 голосов
/ 07 июня 2010

Какой самый быстрый способ для программы .Net проиндексировать все изображения на компьютере пользователя?

Использование Open Source .Net Libs и собственных классов .Net.

В некотором смысле хорошо для XP sp3, ..., Windows 7

  • Самый быстрый - та же конфигурация ПК, другое время (секунды)

  • .Net программа - лучше C #

  • Для индексации - получить список абсолютных ссылок (например, c: // bla-bla / file) и сохранить их в файл (index.txt)

  • Все изображения (например, JPEG, PNG, BMP)

Ответы [ 4 ]

8 голосов
/ 08 июня 2010

Вам придется сканировать с Directory.GetFiles(), рекурсивно.

Вы можете оптимизировать, используя столько потоков, сколько у вас есть дисков (не разделов).

.NET 4 имеет новую потоковую версию GetFiles (), которая может помочь уменьшить использование памяти.

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

4 голосов
/ 08 июня 2010

Самый быстрый способ индексации всех изображений - использовать существующий индекс. Например, служба поиска Windows предлагает программный доступ к своему индексу через несколько интерфейсов.

Самый простой способ получить доступ к этим интерфейсам из .NET - это, вероятно, Windows API Code Pack .

2 голосов
/ 08 июня 2010

Вы перебираете все файлы ; Ваша настоящая задача - решить, что это за изображение или нет. Это может быть так же просто, как проверка расширения файла, или так же дорого, как открытие файла и его проверка , например. file магия.

Наконец, вам нужно « наблюдать за изменениями » и постоянно обновлять настройки.

Это будет связано с вводом-выводом, в зависимости от того, будете ли вы выбирать изображения по расширению или изучите их содержимое.

2 голосов
/ 07 июня 2010

Можете ли вы использовать Lucene .NET? http://incubator.apache.org/lucene.net/

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