当前位置:编程学习 > wap >>

删除文件删除不了

我在使用网络接收了临时的数据,但是接收完成后,不能删除这个文件,使用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.");
}

}
}
}
--------------------编程问答-------------------- 关闭文件后还要删除文件

此函数用于删除由给定文件名标识的文件。 
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);



--------------------编程问答-------------------- 你在哪里调用的remove? --------------------编程问答-------------------- 重置下文件指针:
IFILE_Seek(pIFile, _SEEK_START, 0);
再去Move --------------------编程问答-------------------- 先要释放掉pIFile指针的,不然删除的文件还是在被使用中
补充:移动开发 ,  Brew
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,