2011-02-03 2 views
2

Я немного новичок в C++, но не в программировании вообще. Я хочу написать свою первую практическую программу на C++ в качестве программы индексирования файлов.Планирование программы индексации файлов

Похоже, что достаточно просто сканировать каталоги для имен, хранить эту информацию и фильтровать их в зависимости от того, что я хочу просмотреть.

В какой-то момент меня беспокоит, я хочу индексировать целый диск (у меня есть дополнительный 1 ТБ диск, кроме моей ОС, чтобы хранить файлы). У меня там около 400 000-500 000 файлов, и мне было интересно, что будет лучшим способом хранить эту информацию? Я очень сомневаюсь, что все эти записи в текстовом файле оптимальны и хотели бы думать, что это наивно.

Есть ли что-нибудь еще, о чем я должен беспокоиться?

Спасибо.

+0

Какие вопросы вы планируете делать? –

+0

Поиск имен файлов и типов файлов. Может быть, позже по дороге я мог бы добавить другие типы фильтров, такие как размер файла, дата и т. Д. – Tek

+0

Входите в функции Хэша. – Nav

ответ

1

Является ли какая-то база данных очевидным ответом?

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

+0

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

+0

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

+0

Чтобы ответить на ваш первый вопрос: да, я бы вернул местоположение, соответствующее имени файла. Я не сказал, что не хочу использовать базу данных, хотя у меня есть вопрос. Как будет работать база данных? Должен ли я подключиться к серверу, чтобы иметь возможность хранить/извлекать данные или что? (Извините, что я не знаком с настольными приложениями, я исхожу из опыта работы с веб-ориентированным программированием) – Tek

0

Вы можете безопасно сохранять свои данные в текстовом файле. Тем не менее, вам нужно будет прочитать файл в памяти при запуске и выполнить все сложные операции в памяти. Даже если мы предположим наивный подход, когда вы храните путь к файлу с каждым файлом, вы все равно будете смотреть ~ 100 байт/файл или ~ 50 мегабайт. Более разумный подход хранит только имя файла и указатель на имя каталога.

Смежные вопросы