Доступ к определенной записи с помощью lseek - PullRequest
0 голосов
/ 25 марта 2011

Можно ли получить доступ к определенному (с использованием определенного индекса) в текстовом файле, не зная размер каждой записи?

Ответы [ 3 ]

3 голосов
/ 25 марта 2011

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

0 голосов
/ 26 марта 2011

Проверьте функцию dbopen (). Если вы передадите DB_RECNO в качестве параметра типа, вы сможете получить доступ к записям переменной длины. Эти записи могут быть разделены новыми строками. По сути, ваша «база данных» представляет собой простой текстовый файл.

API будет удобно обрабатывать вставки и удаления для вас.

0 голосов
/ 25 марта 2011

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

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