HANDLE hFile = CreateFile("test.txt", FILE_GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
ULONG nWritten = 0;
WriteFile(hFile, "line-to-be-appened\r\n", strlen("line-to-be-appened\r\n"), &nWritten, NULL);
CloseFile(hFile);
当上面的代码片段打开一个现有的文件test.txt
,并期望将"line-to-be-appened\r\n"
附加到文件的末尾。然而,它只是覆盖了文件。
我怎样才能使它在最后追加?
2条答案
按热度按时间z0qdvdin1#
当你打开文件时,默认情况下,它的读写指针在文件的开头。因此,你写的是文件的开头,覆盖了已经存在的内容。
要在文件末尾追加,您需要在写入之前查找到文件末尾,方法如下:
SetFilePointer/Ex()
手动查找,例如:FILE_APPEND_DATA
标志本身,然后它将为您处理查找,例如:FILE_GENERIC_WRITE
包括FILE_WRITE_DATA
和FILE_APPEND_DATA
,但FILE_WRITE_DATA
preventsFILE_APPEND_DATA
from seeking automatically:对于本地文件,如果指定了[FILE_APPEND_DATA]而没有指定FILE_WRITE_DATA,则写入操作不会覆盖现有数据。
np8igboo2#
你可以使用这段代码。这将在tour文件中追加文本,但不会覆盖文件。