2

我知道的直接方法是创建一个新文件,将三个字节写入其中,然后将原始文件读入内存(循环)并将其写入新文件。

是否有更快的方法可以允许跳过新文件的创建,或者跳过将原始文件读入内存并再次写回?

4

3 回答 3

1

不幸的是,没有办法(使用 POSIX 或标准 libc 文件 API)在现有文件中插入或删除一系列字节。

于 2012-04-24T22:42:20.080 回答
1

这与其说是关于 C,不如说是关于文件系统。没有多少常见的文件系统 API 提供了预置数据的快捷方式,所以一般来说直接的方法是唯一的一种。

您可能能够使用适合您平台的某种形式的内存映射 I/O,但这会以一组问题换另一组问题(例如,您可以将整个文件映射到您的地址空间还是被迫中断它成块?)。

于 2012-04-24T22:44:12.227 回答
0

您可以以读/写方式打开文件,读取前 4KB,向后搜索 4KB,写入三个字节,写入 (4KB - 3) 个字节,然后重复该过程直到到达文件末尾。

于 2012-04-24T22:42:41.533 回答