使用Win32 API将文本插入到特定偏移量的文件中

The*_*heo 1 c file-io winapi

我正在寻找一种方法来快速修改大型的千兆字节文件.Win32 API是否支持将文本插入到特定偏移量的文件中,而无需从一开始或从更改的偏移量将整个文件重写回磁盘?

考虑一个例子.假设我们在一个大小为1 GB的文件中反复重复文本"test".如果我想转到500 MB的偏移并插入文本"new",有没有办法插入它而不必从头开始重写整个文件,和/或无需重写最后500 MB的文件?

可以使用Win32 API完成吗?如果没有,是否有任何策略来优化这样的文本插入操作以最大化速度?

Tha*_*tos 9

有一些方法只重写插入点之后的部分,但通常不会 - 在文件中的特定点插入某些内容,您必须在该点之后重写所有内容.

这归结为文件存储在磁盘上的方式 - 通常是块,这样操作不可能或不容易.对于99%的情况,这没关系,因此API不会暴露这样做的方式.

如果你可以控制文件格式,你可以设计出可以将数据写入文件末尾的方法,但是有一些跟踪数据可以说"这些东西真的属于这里".