CreateFile 打开文件重新写入失败,但GetlastError没有失败提示,
我有一颗双亲树,顺序数组存放,要保存到文件里面。每次树被更新之后就要写到文件里面去,
可是下面这个函数运行没有错误,但文件总是没有得到更新
int PtTree::SaveToFile(LPCTSTR Filename)
{
//::DeleteFile(Filename);
//情况内容,
HANDLE hIndex = ::CreateFile(
Filename
,GENERIC_WRITE
,0
,NULL
,TRUNCATE_EXISTING
,FILE_ATTRIBUTE_NORMAL
,NULL);
//打开成功但就是没有把文件更新
if( INVALID_HANDLE_VALUE == hIndex )
{
ShowError();
return 0;
}
DWORD dwNumberOfBytes;
::SetFilePointer( hIndex, 0, 0 , FILE_BEGIN );
//写入节点个数
if(0 == WriteFile( hIndex, (LPVOID) &NodeCount, sizeof(NodeCount), &dwNumberOfBytes, NULL ) )
{
ShowError();
CloseHandle(hIndex);
return 0 ;
}
//写入叶子节点个数
if(0 == WriteFile( hIndex, (LPVOID)&LeafCount, sizeof(LeafCount), &dwNumberOfBytes, NULL ) )
{
ShowError();
CloseHandle(hIndex);
return 0 ;
}
//写入顺序树信息 ,这里在单步的时候可以看到dwNumberOfBytes为500,但文件的大小还是原来的248B
if(NodeCount && 0 == WriteFile( hIndex, (LPVOID)( &node), (NodeCount) * sizeof(PtNode), &dwNumberOfBytes, NULL ) )
{
ShowError();
CloseHandle(hIndex);
return 0 ;
}
//写入叶子数组
if(LeafCount && 0 == WriteFile( hIndex, (LPVOID)(&Leaf), (LeafCount) * sizeof(int), &dwNumberOfBytes, NULL ) )
{
ShowError();
CloseHandle(hIndex);
return 0 ;
}
CloseHandle(hIndex);
return 1;
}