修改现有文件的一小部分

时间:2010-08-27 05:38:51

标签: c++ windows file-io

我查看了boost的mapped_file和CreateFileMapping / MapViewOfFile,但它们看起来过于复杂。

我可以使用更简单的方法在现有文件中覆盖几个字节吗?表现不是一个很重要的考虑因素。

2 个答案:

答案 0 :(得分:1)

您可以直接使用标准C库。 fopen然后fseek到你要写东西的地方。或者,如果您想要花哨,也可以尝试mmap

答案 1 :(得分:0)

这样的事情(未经测试,您还应该检查HRESULTS错误代码):

CAtlFile f;
f.Create( L"MyFile.txt", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ, OPEN_ALWAYS );

CAtlFileMapping<BYTE> map;
map.MapFile( f , 0, 0, PAGE_READWRITE, FILE_MAP_ALL_ACCESS );

printf( "%d bytes\n", (int)map.GetMappingSize() );

// Overwrite the 3-rd byte with 21
map[2] = 21;