【问题标题】:Alternatives to using RFile in Symbian在 Symbian 中使用 RFile 的替代方案
【发布时间】:2010-01-07 17:26:25
【问题描述】:

这个问题是我与文件 I/O 相关的previous question 的延续。

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

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

假设我想将第二条记录中的“3”替换为“2”。我发现使用 RFile 覆盖文件中的特定字段很困难,因为 RFile 不为其用户提供这种设施。

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

我四处寻找替代方案,发现 CPermanentFileStore. 但我觉得 API 很难使用,因为我无法在 Internet 上找到任何证明其用途的资源。

有没有办法解决这个问题。请帮忙。

【问题讨论】:

  • 您希望文件仍然可供人类阅读,不是吗? vCard 格式有帮助吗?

标签: serialization file-io symbian


【解决方案1】:

根据您所针对的 Symbian OS 版本,您可以将信息存储在关系数据库中。从 v9.4 开始,Symbian OS 包含一个 SQL 实现(基于开源 SQLite 引擎)。

【讨论】:

  • DBMS 是之前 Symbian OS 版本中数据库引擎的名称。
【解决方案2】:

无论使用何种操作系统,对此类记录使用普通文件都需要付出很多努力。为了能够有效地执行此操作,您需要在文件中保留空间以扩展每条记录 - 否则,如果记录值从 9 变为 10,则需要重写整个文件。还在文件中存储查找表将使可以使用 RFile::Seek 直接跳转到记录。

CPermamanentFileStore 简化了文件的实际读写,但基本上可以完成您必须自己做的事情。在这种情况下,数据库可能是更好的选择。如果您不想使用数据库,我认为使用商店将是一个更好的解决方案。

【讨论】:

    猜你喜欢
    • 2014-03-03
    • 2020-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多