我利用API向文件末尾写字符串,执行N次后出现错误(N<10),寻求答案(代码见内)
HANDLE iFileHandle;
iFileHandle = CreateFile("Error.txt",GENERIC_READ|GENERIC_WRITE,FILE_SHARE_WRITE,NULL,
OPEN_ALWAYS,NULL,NULL);
DWORD File_Size;
LPDWORD high_size = new DWORD();
File_Size = GetFileSize(iFileHandle,high_size);
Label1->Caption = "文件大小:"+ IntToStr(File_Size)+" 个字节";
AnsiString test_str = "测试;\r\n";
OVERLAPPED *lpLapped = new OVERLAPPED();
lpLapped->Offset = File_Size;
lpLapped->OffsetHigh = *high_size;
if (!WriteFile(iFileHandle,test_str.c_str(),test_str.Length(),NULL,lpLapped))
{
LPVOID lpMsgBuf;
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
GetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
(LPTSTR) &lpMsgBuf,
0,
NULL
);
MessageBox( NULL, (LPCTSTR)lpMsgBuf, "函数返回错误:", MB_OK | MB_ICONINFORMATION );
delete lpMsgBuf;
}
delete high_size;
free(lpLapped);
CloseHandle(iFileHandle);