这个问题是继续我的previous question与文件I / O相关的。
我正在使用RFile打开文件并读取/写入数据。现在,我的要求是我必须修改文件中的某些字段。我用记录分隔记录中的每个字段,每个记录用换行符分隔。样品如下:
abc@def.com:Albert:1:2
def@ghi.com:Alice:3:1
假设我想将第二条记录中的“3”替换为“2”。我发现使用RFile覆盖文件中的特定字段很困难,因为RFile不向其用户提供此类工具。
由于这个原因,要修改记录,我必须删除文件的内容并序列化(即通过内存表示记录并写入文件)。每当记录的值发生变化时这样做是非常昂贵的,因为有数百条记录并且变化可能非常频繁。
我搜索了替代方案,发现CPermanentFileStore.但我觉得API难以使用,因为我无法在互联网上找到任何证明其使用的来源。
有没有办法解决这个问题。请帮忙。
答案 0 :(得分:2)
根据您要定位的Symbian OS版本,您可以将信息存储在关系数据库中。从v9.4开始,Symbian OS包含一个SQL实现(基于开源SQLite引擎)。
答案 1 :(得分:1)
无论操作系统如何,对这种类型的记录使用普通文件都需要付出很多努力。为了能够有效地执行此操作,您需要在文件中保留空间以扩展每条记录 - 否则,如果记录值从9更改为10,则需要重写整个文件。此外,在文件中存储查找表将使可以使用RFile :: Seek直接跳转到记录。
CPermamanentFileStore简化了文件的实际读取和写入,但基本上做了你自己必须做的事情。在这种情况下,数据库可能是更好的选择。如果您不想使用数据库,我认为使用商店将是一个更好的解决方案。