利用Cfile删除文件 remove 有时删不掉

KHacker_001 2009-12-29 08:31:19
我做了一程序,当要用remove()函数删除文件时,有时能删而有时却删不了,这是为什么呢?(文件名正确,路径正确)
流程是这样的:这次处理完毕 删除3个缓存文件; 格半小时后,再次处理前同样先判断是否存在如有删除缓存文件
代码:try
{
CFileFind find;
CString path;
for (int i=1;i<4;i++)
{
path.Format("d:\\%d.DLV",i);
if(find.FindFile(path))//
{
CFile TempFile;
TempFile.Remove(path);
}
}
}
catch (CException* e)
{
m_state.SetWindowText("»º´æÎļþɾ³ý³ö´í");
buf=strTime+"»º´æÎļþɾ³ý³ö´í";
m_runLog.Write(buf,strlen(buf));
m_runLog.Flush();

}

当第一次结束出现删除违例的时候,D盘下的3.DLV没删掉,下一次再删还是删不掉 请各位大侠指点!!!!

难道未释放,还是什么原因啊
...全文
1121 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
xmzzy 2009-12-30
  • 打赏
  • 举报
回复
上面打错字,是把目标文件名设置成NULL
xmzzy 2009-12-30
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 freddyhu 的回复:]
引用 7 楼 yinhaijing123 的回复:
引用 4 楼 zoulie 的回复:
句柄没有关掉或者有进程在占打开这个文件,用MoveFileEx试试
大哥,这个函数也不能删除文件啊
只能移动啊

支持
[/Quote]

把目录文件名设置为NULL,就是删除文件
FreddyHu 2009-12-30
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 yinhaijing123 的回复:]
引用 4 楼 zoulie 的回复:
句柄没有关掉或者有进程在占打开这个文件,用MoveFileEx试试
大哥,这个函数也不能删除文件啊
只能移动啊
[/Quote]
支持
lhy2199 2009-12-30
  • 打赏
  • 举报
回复
[Quote=引用楼主 yinhaijing123 的回复:]
  我做了一程序,当要用remove()函数删除文件时,有时能删而有时却删不了,这是为什么呢?(文件名正确,路径正确) 
    流程是这样的:这次处理完毕 删除3个缓存文件; 格半小时后,再次处理前同样先判断是否存在如有删除缓存文件
  代码:try
{
CFileFind find;
CString path;
for (int i=1;i <4;i++)
{
path.Format("d:\\%d.DLV",i);
if(find.FindFile(path))//
{
CFile  TempFile;
TempFile.Remove(path);
}
}
}
catch (CException* e)
{
m_state.SetWindowText("»º´æÎļþɾ³ý³ö´í");
buf=strTime+"»º´æÎļþɾ³ý³ö´í";
        m_runLog.Write(buf,strlen(buf));
        m_runLog.Flush();

}

当第一次结束出现删除违例的时候,D盘下的3.DLV没删掉,下一次再删还是删不掉 请各位大侠指点!!!!

难道未释放,还是什么原因啊
[/Quote]

3.DLV 文件夹下是否还有子文件夹,可能这样就删除不掉了
C你 2009-12-29
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 fandh 的回复:]
是否考虑用:BOOL DeleteFile(LPCTSTR lpFileName );
[/Quote]
支持
fandh 2009-12-29
  • 打赏
  • 举报
回复
是否考虑用:BOOL DeleteFile(LPCTSTR lpFileName );
KHacker_001 2009-12-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zoulie 的回复:]
句柄没有关掉或者有进程在占打开这个文件,用MoveFileEx试试
[/Quote]大哥,这个函数也不能删除文件啊
只能移动啊
KHacker_001 2009-12-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 fandh 的回复:]
这是一个static函数,不是这样调用的!要这样调用:
CFile::Remove( path);

[/Quote]静态函数这样调用也行的吧!!!!!!!
fandh 2009-12-29
  • 打赏
  • 举报
回复
这是一个static函数,不是这样调用的!要这样调用:
CFile::Remove( path);
zoulie 2009-12-29
  • 打赏
  • 举报
回复
句柄没有关掉或者有进程在占打开这个文件,用MoveFileEx试试
KHacker_001 2009-12-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 oyljerry 的回复:]
是不是被open了,没有close,关闭
删除不掉查看一下错误号,GetLastError
[/Quote]关键是有时出错,而且出错了之后就一直删不掉了
nintendo_dskay 2009-12-29
  • 打赏
  • 举报
回复
应该是有进程在使用这个文件。
oyljerry 2009-12-29
  • 打赏
  • 举报
回复
是不是被open了,没有close,关闭
删除不掉查看一下错误号,GetLastError

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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