2010-08-27 14 views
0

J'ai regardé le mapped_file de boost, et CreateFileMapping/MapViewOfFile, mais ils semblent trop compliqués à utiliser.Modification d'une petite partie d'un fichier existant

Quelque chose de plus simple je peux utiliser pour écraser quelques octets ici et là dans un fichier existant? La performance n'est pas une considération très élevée.

+0

avec des fichiers, la sécurité est également une spécification non fonctionnelle doit être inquiété sur le point de décider d'une mise en œuvre appropriée – Chubsdad

+0

Est-ce que l'iostream, le fstream etc. échouent? – Chubsdad

Répondre

1

Vous pouvez utiliser directement la bibliothèque C standard. fopen puis fseek à l'endroit où vous voulez écrire des choses. Ou, si vous voulez être chic, vous pouvez également essayer mmap.

0

Quelque chose comme ça (non testé, et vous devriez également vérifier les codes d'erreur 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; 
Questions connexes