管理磁盘上的许多GB数据,直接访问

时间:2014-02-03 11:27:34

标签: c++ file binary

我试图找出我是否愿意解决一个引起我兴趣的问题。为了解决这个问题,我需要创建一个多TB的二进制文件。如果我很幸运,这可以减少到大约300GB,这将是解决我的问题所需的最小内存。显然,数据不能保存在RAM中,所以我必须弄清楚如何以及何时写入(和读取)磁盘。

我想通常写入磁盘的方法是不可能的。当fstream尝试将文件加载到内存中时,它会失败。有没有人知道(最好是便携式)技术,可以直接读写磁盘而无需先缓存(部分)数据?在我看来,我甚至可能不需要文件系统来执行此操作。我不能直接翻转磁盘上的位(不使用emacs'M-x butterfly)?

1 个答案:

答案 0 :(得分:3)

我认为内存映射文件(在64位系统上)正是您所需要的。

您只需将整个文件映射到内存中,并像普通数据结构一样对其进行操作;操作系统负责向/从内存加载和卸载数据。

这不是标准的C ++,但有一个Boost implementation可以在主要平台上运行。