如何调整/延长/截断文件并在开头留出更多空间?

时间:2013-10-20 03:59:38

标签: c++ c file file-io truncate

ftruncate()的一个侧面用途是,我们可以通过在文件末尾粘贴零来调整文件大小,假设您请求的文件大小大于原始文件。这似乎是一个调整文件描述符等的文件大小的低成本解决方案。当我们希望新创建的区域存在于文件的末尾时,这是一个很好的解决方案(类似于realloc()给出的方式你在原始内容之后的新空间。)

但是开始呢!如果我想调整文件大小但是在文件开头获取新空间怎么办?我真的不敢相信我必须简单地将所有数据复制到文件的后面部分(或者我?)。这将是一个非常耗时的操作!还有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

我不这么认为,尤其不是以操作系统无关的方式。您将依赖操作系统来分配磁盘块并将其预先添加到文件使用的块列表中。块具有固定大小,因此即使有一种方法,您的数据也必须与块大小匹配。