开发者

Alternatives to using RFile in Symbian

开发者 https://www.devze.com 2022-12-15 22:09 出处:网络
This question is in continuation to my previous question related to File I/O. I am using RFile to open a file and read/write data to it. Now, my requirement is such that I would have to modify certai

This question is in continuation to my previous question related to File I/O.

I am using RFile to open a file and read/write data to it. Now, my requirement is such that I would have to modify certain fields within the file. I separate each field within a record with a colon and each record with a newline. Sample is below:

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

Suppose I want to replace the '3' in the second record by '2'. I am finding it difficult to overwrite specific field in the file using RFile because RFile does not provide its users with such facility.

Due to this, to modify a record I have to delete the contents of the file and serialize ( that is loop through in memory representation of records and write to the file ). Doing this everytime there is a change in a record's value is quite expensive as there are hundreds of recor开发者_StackOverflow社区ds and the change could be quite frequent.

I searched around for alternatives and found CPermanentFileStore. But I feel the API is hard to use as I am not able to find any source on the Internet that demonstrates its use.

Is there a way around this. Please help.


Depending on which version(s) of Symbian OS you are targetting, you could store the information in a relational database. Since v9.4, Symbian OS includes an SQL implementation (based on the open source SQLite engine).


Using normal files for this type of records takes a lot of effort no matter the operating system. To be able to do this efficiently you need to reserve space in the file for expansion of each record - otherwise you need to rewrite the entire file if a record value changes from say 9 to 10. Also storing a lookup table in the file will make it possible to jump directly to a record using RFile::Seek.

The CPermamanentFileStore simplifies the actual reading and writing of the file but basically does what you have to do yourself otherwise. A database may be a better choice in this instance. If you don't want to use a database I think using stores would be be a better solution.

0

精彩评论

暂无评论...
验证码 换一张
取 消