我正在考虑编写文件 I/O 抽象。常见桌面操作系统的 API 是否支持从文件中的随机位置插入或擦除?或者,如果我的界面提供,我是否必须手动调整文件中的每个字节?
问问题
169 次
3 回答
0
是的,您需要自己实现 shuffle。
于 2012-06-09T05:59:34.090 回答
0
使用 C 标准库,您可以打开具有写入权限的文件,然后调用fseek()
移动到特定位置,然后在该位置写入。请参阅 的手册页fseek()
或它的网页:http: //linux.die.net/man/3/fseek
但是覆盖就是你所得到的。如果要插入或删除数据,则需要从该点重写整个文件。这效率不高。
因此,不要使用文件,而是使用某种数据库。您可以插入记录和删除记录,而无需重写文件:您只需重写一些索引。但是要读取数据,您需要使用数据库遍历索引并以正确的顺序提取记录。
在 PalmOS 上,我相信应用程序唯一可用的存储是数据库存储!但是在大多数环境中没有内置数据库;你需要安装一些东西。
我建议您从使用 SQLite 开始,因为它是公共领域(完全免费供任何使用)并且经过很好的调试。它的性能不会很惊人,但它会比完全重写文件来插入和删除东西要好。此外,由于 SQLite 非常流行,大多数编程语言都可以使用绑定。
于 2012-06-09T06:00:38.483 回答