C、C++操作大文件时(256M)指定位置写入而不覆盖后面数据

2025-05-05 01:26:24
推荐回答(2个)
回答1:

创建一个文件,然后写入无效数据0,比如文件10M。

然后随意seek 也就是移动当前写入指针,范围0-10M的范围,如果移动到结尾了就不能继续往后了

如果是在结尾,则是追加文件内容
如果是在中间,则写入10B的数据,就覆盖10B的数据。

后面的数据是不会自动搬家的。

如果这个问题好解决,windows操作系统就不需要用久了就需要清理磁盘碎片了
windows操作系统的文件内容是分块存放的,实际存储有时候文件是不连续的,通过一些索引序号的措施让你能够连续读取数据。

如果你想要中间插入数据,想想链表的思路吧。

回答2:

文件是顺序存储,不可能写入不覆盖的,必须自己实现后面数据的搬移。