Ищете эффективный способ индексирования файлов - PullRequest
0 голосов
/ 10 февраля 2011

Я начал работать над новым домашним проектом, мне нужно индексировать определенные имена файлов с указанными там путями. Программа будет индексировать файлы на моем локальном жестком диске без необходимости иметь дело с содержимым файлов (поэтому я предполагаю / надеюсь, что это будет простая реализация). Сначала пользователь вставит список расширений файлов для индексации (во время установки). Затем программа запустится и создаст структуру данных, содержащую путь для конкретного файла, введенного пользователем.

Получение данных по структуре данных будет выглядеть так:

путь к файлу на моем жестком диске = функция (имя файла введено пользователем)

Я долго думал об этом и написал дизайн структуры данных, вот мое предложение ( Дизайн Иллюстрация ):

  1. Я буду использовать массив с хэш-функцией для сопоставления расширения с ячейкой (каждая ячейка представляет
    первая буква файла расширения).

  2. внутри каждой ячейки будет список расширений, начинающихся с той же буквы.

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

Да, кстати, я обычно программирую на с (низкий уровень) или на с ++.

1 Ответ

1 голос
/ 10 февраля 2011

Я думаю, вы делаете слишком сложную и сложную схему. Если вам нужно найти MyFileTree на основе расширения, просто используйте SortedDictionary<string, MyFileTree>, где string - ваше расширение, и вы получите механизм извлечения O (log n) из коробки.

...