0

的一个附带用途ftruncate()是,我们可以通过在文件末尾添加零来调整文件大小,假设您请求的新文件大小大于原始文件大小。这似乎是调整文件大小的低成本解决方案,因为它修改了文件描述符等。当我们希望新创建的区域存在于文件末尾时,这是一个很好的解决方案(类似于如何realloc()在之后为您提供新空间您的原始内容)。

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

4

1 回答 1

1

我不这么认为,尤其是不是以与操作系统无关的方式。您将取决于操作系统来分配磁盘块并将其添加到文件使用的块列表中。块的大小是固定的,所以即使你的数据有办法匹配块大小。

于 2013-10-20T04:05:52.947 回答