我在插入文本时遇到麻烦,附加在经典文本文件中。我想做的很简单:在一些行的前面插入一个字符。我知道每行开始的确切偏移量。我有一个限制,我必须使用Windows API:CreateFile(),WriteFile(),SetFilePointer()...
我无法插入文本,无论我做什么,程序写到最后,或者如果它写入良好的偏移量,它都会删除现有文本。
这是我的代码(我只是将一些检查简化为更易读):
HANDLE handleFile = CreateFile (filename,
FILE_APPEND_DATA,
FILE_SHARE_READ, //SHARE
NULL, //SecurityAttibute
OPEN_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);
if (handleFile != INVALID_HANDLE_VALUE) {
if (SetFilePointer (handleFile, 12345, NULL, FILE_BEGIN) != INVALID_SET_FILE_POINTER) {
DWORD written = 0;
WriteFile (handleFile, "$", 1, &written, NULL);
}
}
当我使用FILE_APPEND_DATA时,SetFilePointer()不起作用,我的角色被写到最后。
当我使用GENERIC_WRITE,甚至是FILE_GENERIC_WRITE时,字符以良好的偏移量写入,但它会删除当前字符:'(
真正插入的好参数是什么?
PS:这段代码适用于非常大的文件,所以读/写整个文件是不可能的,也就是太长了。
非常感谢!
答案 0 :(得分:2)
您无法以尝试的方式将文本插入文件中。您可以将数据附加到最后,也可以覆盖现有数据。为了实现插入,您必须重新编写插入点之后的所有内容。