高手帮忙!关于CFile写文件有关问题
高手帮忙!关于CFile写文件问题
CFile fWrite;
BOOL bOpenFlag = fWrite.Open(m_strSaveFilePath,
CFile::modeNoTruncate | CFile::modeCreate | CFile::modeWrite,NULL);//存在则打开,不存在则创建
if (bOpenFlag)//成功,写
{
int nLenth = 8;
//整理数据
//整理数据的时间不会很长,不会超过1ms的时间
nLenth = fWrite.GetLength();
m_nNumsOfRecord = nLenth / 52;
fWrite.SeekToEnd();
fWrite.Write(m_byDataBuf,52);
fWrite.Abort();//一开始是Close()的,但是效果是一样的
}
else
{
static iNums = 0;//记录次数
DWORD dwError = GetLastError();
m_strListOut.Format( "打开记录文件失败!LastError:%d-%d ",dwError,iNums);//通过Report提示出来。
SendMessage(WM_DISPLAYINFO,0,0);
iNums++;
fWrite.Abort();
}
//发现一个奇怪的现象,每隔1秒调用此代码一次,文件目前是十多M吧
//为什么长时间执行下来,会有几条数据的丢失,丢失的结果都是此文件被其他进程打开!首先声明这个程序只做这么一件事,还有其他程序没有访问此文件。
//运行的平台是笔记本。PM1.7G,应该不慢啊!
//高手帮忙分析原因!!!!!!!
------解决方案--------------------
//发现一个奇怪的现象,每隔1秒调用此代码一次,文件目前是十多M吧
是不是有一个Timer?
//为什么长时间执行下来,会有几条数据的丢失,丢失的结果都是此文件被其他进程打开!首先声明这个程序只做这么一件事,还有其他程序没有访问此文件。
可能是多线程的。
------解决方案--------------------
如果你在OnTimer中只是读没有写,那么你就在两个打开文件的地方都加上CFile::shareDenyNone试下。
CFile fWrite;
BOOL bOpenFlag = fWrite.Open(m_strSaveFilePath,
CFile::modeNoTruncate | CFile::modeCreate | CFile::modeWrite,NULL);//存在则打开,不存在则创建
if (bOpenFlag)//成功,写
{
int nLenth = 8;
//整理数据
//整理数据的时间不会很长,不会超过1ms的时间
nLenth = fWrite.GetLength();
m_nNumsOfRecord = nLenth / 52;
fWrite.SeekToEnd();
fWrite.Write(m_byDataBuf,52);
fWrite.Abort();//一开始是Close()的,但是效果是一样的
}
else
{
static iNums = 0;//记录次数
DWORD dwError = GetLastError();
m_strListOut.Format( "打开记录文件失败!LastError:%d-%d ",dwError,iNums);//通过Report提示出来。
SendMessage(WM_DISPLAYINFO,0,0);
iNums++;
fWrite.Abort();
}
//发现一个奇怪的现象,每隔1秒调用此代码一次,文件目前是十多M吧
//为什么长时间执行下来,会有几条数据的丢失,丢失的结果都是此文件被其他进程打开!首先声明这个程序只做这么一件事,还有其他程序没有访问此文件。
//运行的平台是笔记本。PM1.7G,应该不慢啊!
//高手帮忙分析原因!!!!!!!
------解决方案--------------------
//发现一个奇怪的现象,每隔1秒调用此代码一次,文件目前是十多M吧
是不是有一个Timer?
//为什么长时间执行下来,会有几条数据的丢失,丢失的结果都是此文件被其他进程打开!首先声明这个程序只做这么一件事,还有其他程序没有访问此文件。
可能是多线程的。
------解决方案--------------------
如果你在OnTimer中只是读没有写,那么你就在两个打开文件的地方都加上CFile::shareDenyNone试下。