删除文件删除不了

QMCY_jason 2010-01-15 10:40:07
我在使用网络接收了临时的数据,但是接收完成后,不能删除这个文件,使用IFILEMGR_GetLastError 得到 EFILEOPEN。
但是 我已经释放了,不知道问题出在哪,下面是我的代码。麻烦大侠们看看

void WebLoginCB(void *pUser)
{

char *buffer=NULL;
AECHAR wBuf[20]={0};
int byteCount=0,nRet = 0;
IFileMgr *pIFileMgr;
IFile *pIFile;
njmengniu *pMe = (njmengniu *)pUser;
WebRespInfo *pWebRespInfo = IWEBRESP_GetInfo(pMe->m_pIWebResp);

DBGPRINTF("Wen response result:%d",pWebRespInfo->nCode);

if (pWebRespInfo)
{
if (!WEB_ERROR_SUCCEEDED(pWebRespInfo->nCode))
{
WebCleanup(pMe);
DBGPRINTF("Error occur...");
pMe->m_appThirdState = APP_STATE_SENDDONE;
ShowAlertMessage(pMe,IDS_COMMON_SENDFAIL,FALSE);
}
else
{
ISource* pISource = pWebRespInfo->pisMessage;
buffer = (char *)MALLOC(200);
MEMSET(buffer,0,200);
if (!buffer)
{
return ;
}
byteCount = ISOURCE_Read(pISource,buffer,200);
if (ISHELL_CreateInstance(pMe->a.m_pIShell,AEECLSID_FILEMGR,(void **)&pIFileMgr) != SUCCESS)
{
FREEIF(buffer);
return;
}
if (pMe->m_focusItem == IDS_COMMON_LOGO)
{
pIFile= IFILEMGR_OpenFile(pIFileMgr,DATA_RECEIVE,_OFM_READWRITE);
if (pIFile == NULL)
{
DBGPRINTF("Open file failed");
pIFile= IFILEMGR_OpenFile(pIFileMgr,DATA_TEMPRECEIVE,_OFM_CREATE);
}
IFILE_Seek(pIFile,_SEEK_END,0);
}
else
{
DBGPRINTF("Not logo");
pIFile= IFILEMGR_OpenFile(pIFileMgr,DATA_TEMPRECEIVE,_OFM_READWRITE);
if (pIFile == NULL)
{
DBGPRINTF("Create new DATA_TEMPRECEIVE");
pIFile= IFILEMGR_OpenFile(pIFileMgr,DATA_TEMPRECEIVE,_OFM_CREATE);
//return ;
}
IFILE_Seek(pIFile,_SEEK_END,0);
}


while(byteCount != ISOURCE_END && byteCount != ISOURCE_ERROR)
{
if (byteCount != ISOURCE_WAIT)
IFILE_Write(pIFile, buffer, byteCount);
else
{
ISOURCE_Readable(pISource, &pMe->m_Callback);
FREEIF(buffer);
return;
}

byteCount = ISOURCE_Read(pISource, buffer, 200);
}

FREEIF(buffer);
ISOURCE_Release(pISource);
nRet = IFILE_Release(pIFile);
DBGPRINTF("IFILE_Release:%d",nRet);
nRet = IFILEMGR_Release(pIFileMgr);
DBGPRINTF("IFILEMGR_Release:%d",nRet);

if (byteCount == ISOURCE_END)
{

ConvertToUnicode(pMe,buffer);
switch (pMe->m_focusItem)
{
case IDS_COMMON_LOGO:
AnalysisLogin(pMe);
break;
case IDS_MAINMENU_GOODSREACH:
AnalysisGoods(pMe);
break;
case IDS_MAINMENU_ORDERREACH:
AnalysisReach(pMe);
break;
case IDS_MAINMENU_LOOKUPSTOCK:
AnalysisStock(pMe);
break;
}
WebCleanup(pMe);


pMe->m_appThirdState = APP_SUBSTATE_ROOT;
}
if(byteCount == ISOURCE_ERROR)
{
DBGPRINTF("Error occured.");
}

}
}
}
...全文
1876 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
twoconk 2010-02-23
  • 打赏
  • 举报
回复
先要释放掉pIFile指针的,不然删除的文件还是在被使用中
tianlei75290 2010-02-09
  • 打赏
  • 举报
回复
重置下文件指针:
IFILE_Seek(pIFile, _SEEK_START, 0);
再去Move
babiq 2010-01-19
  • 打赏
  • 举报
回复
你在哪里调用的remove?
kaka_vip_2008 2010-01-18
  • 打赏
  • 举报
回复
关闭文件后还要删除文件

此函数用于删除由给定文件名标识的文件。
int IFILEMGR_Remove

(
IFileMgr * pIFileMgr,
const char * pszName

)
SUCCESS: 如果成功

EFAILED: 如果失败

代码修改为:

FREEIF(buffer);
ISOURCE_Release(pISource);
nRet = IFILE_Release(pIFile);
DBGPRINTF("IFILE_Release:%d",nRet);
nRet = IFILEMGR_Remove(pIFileMgr,DATA_TEMPRECEIVE);


nRet = IFILEMGR_Release(pIFileMgr);
DBGPRINTF("IFILEMGR_Release:%d",nRet);



2,851

社区成员

发帖
与我相关
我的任务
社区描述
本论坛以AI、WoS 、XR、IoT、Auto、生成式AI等核心板块组成,为开发者提供便捷及高效的学习和交流平台。 高通开发者专区主页:https://qualcomm.csdn.net/
人工智能物联网机器学习 技术论坛(原bbs) 北京·东城区
社区管理员
  • csdnsqst0050
  • chipseeker
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧