-4

我正在考虑编写文件 I/O 抽象。常见桌面操作系统的 API 是否支持从文件中的随机位置插入或擦除?或者,如果我的界面提供,我是否必须手动调整文件中的每个字节?

4

3 回答 3

0

是的,您需要自己实现 shuffle。

于 2012-06-09T05:59:34.090 回答
0

不了解 API 本身。但是Windows和 Linux上的内存映射文件以一种迂回的方式提供了这种功能。所以你可以把它包装起来。

于 2012-06-09T05:59:54.613 回答
0

使用 C 标准库,您可以打开具有写入权限的文件,然后调用fseek()移动到特定位置,然后在该位置写入。请参阅 的手册页fseek()或它的网页:http: //linux.die.net/man/3/fseek

但是覆盖就是你所得到的。如果要插入或删除数据,则需要从该点重写整个文件。这效率不高。

因此,不要使用文件,而是使用某种数据库。您可以插入记录和删除记​​录,而无需重写文件:您只需重写一些索引。但是要读取数据,您需要使用数据库遍历索引并以正确的顺序提取记录。

在 PalmOS 上,我相信应用程序唯一可用的存储是数据库存储!但是在大多数环境中没有内置数据库;你需要安装一些东西。

我建议您从使用 SQLite 开始,因为它是公共领域(完全免费供任何使用)并且经过很好的调试。它的性能不会很惊人,但它会比完全重写文件来插入和删除东西要好。此外,由于 SQLite 非常流行,大多数编程语言都可以使用绑定。

http://sqlite.org/

于 2012-06-09T06:00:38.483 回答