Альтернативы использованию RFile в Symbian - PullRequest
1 голос
/ 07 января 2010

Этот вопрос является продолжением моего предыдущего вопроса , касающегося файлового ввода-вывода.

Я использую RFile для открытия файла и чтения / записи данных в него. Теперь мое требование таково, что мне придется изменить определенные поля в файле. Я разделяю каждое поле в записи двоеточием, а каждую запись - новой строкой. Образец ниже:

abc@def.com:Albert:1:2
def@ghi.com:Alice:3:1

Предположим, я хочу заменить '3' во второй записи на '2'. Мне трудно перезаписать определенное поле в файле, используя RFile, потому что RFile не предоставляет своим пользователям такую ​​возможность.

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

Я искал альтернативы и нашел CPermanentFileStore. Но я чувствую, что API сложно использовать, так как я не могу найти в Интернете источник, демонстрирующий его использование.

Есть ли способ обойти это? Пожалуйста, помогите.

Ответы [ 2 ]

2 голосов
/ 08 января 2010

В зависимости от того, на какую версию (ы) Symbian OS вы ориентируетесь, вы можете хранить информацию в реляционной базе данных. Начиная с версии 9.4, ОС Symbian включает реализацию SQL (на основе движка с открытым исходным кодом SQLite ).

1 голос
/ 09 января 2010

Использование обычных файлов для этого типа записей требует больших усилий независимо от операционной системы. Чтобы сделать это эффективно, вам нужно зарезервировать место в файле для расширения каждой записи - в противном случае вам нужно переписать весь файл, если значение записи изменится, скажем, с 9 на 10. Также сохранение таблицы поиска в файле приведет можно перейти непосредственно к записи, используя RFile :: Seek.

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

...