Serialization Symbian中使用RFile的替代方案

Serialization Symbian中使用RFile的替代方案,serialization,file-io,symbian,Serialization,File Io,Symbian,这个问题是我与文件I/O相关的问题的继续 我正在使用RFile打开一个文件并对其读/写数据。现在,我的要求是必须修改文件中的某些字段。我用冒号分隔记录中的每个字段,用换行符分隔记录中的每个字段。样本如下: abc@def.com:Albert:1:2 def@ghi.com:Alice:3:1 假设我想用“2”替换第二条记录中的“3”。我发现使用RFile很难覆盖文件中的特定字段,因为RFile没有为其用户提供这样的功能 因此,要修改记录,我必须删除文件的内容并序列化(即循环记录的内存表示并写

这个问题是我与文件I/O相关的问题的继续

我正在使用RFile打开一个文件并对其读/写数据。现在,我的要求是必须修改文件中的某些字段。我用冒号分隔记录中的每个字段,用换行符分隔记录中的每个字段。样本如下:

abc@def.com:Albert:1:2
def@ghi.com:Alice:3:1
假设我想用“2”替换第二条记录中的“3”。我发现使用RFile很难覆盖文件中的特定字段,因为RFile没有为其用户提供这样的功能

因此,要修改记录,我必须删除文件的内容并序列化(即循环记录的内存表示并写入文件)。每次更改记录的值时都要这样做是非常昂贵的,因为有数百条记录,而且更改可能非常频繁

我四处搜索,找到了替代方案,但我觉得API很难使用,因为我在互联网上找不到任何证明其使用的来源


有办法解决这个问题吗。请提供帮助。

根据所针对的Symbian操作系统版本,您可以将信息存储在关系数据库中。自v9.4以来,Symbian操作系统包括一个SQL实现(基于开源引擎)。

无论操作系统如何,为此类记录使用普通文件都需要花费大量精力。为了有效地执行此操作,您需要在文件中为每个记录的扩展保留空间,否则,如果记录值从9更改为10,则需要重写整个文件。此外,在文件中存储查找表将使使用RFile::Seek直接跳转到记录成为可能


CPerManentFileStore简化了文件的实际读取和写入,但基本上完成了您必须自己完成的工作。在这种情况下,数据库可能是更好的选择。如果您不想使用数据库,我认为使用存储是更好的解决方案

DBMS是以前版本的Symbian OS中数据库引擎的名称。您希望该文件保持可读性,是吗?vCard格式有什么帮助吗?