WinCE删除文件DeleteFile失败

zhuyf87 2013-01-18 01:24:49
BOOL return_value = DeleteFile(_T("\\UPLOAD\\手持上传数据_20130118111800_470370360369.zip"));

if (!return_value)
{
DWORD error = 0;
error = GetLastError();
}


我的程序中,会使用上面这段代码删除WinCE系统上一些文件。
一般情况下都工作正常,但偶尔会出现有文件删除失败的情况,我在程序中加了日志。
出现删除失败的情况时,我用GetLastError返回错误码,返回的是-1(应该是0xffffffff吧)。
我想通过GetLastError返回的错误码,获知删除失败的原因(被占用?)。
但现在GetLastError的返回值是-1或者说0xffffffff,并不是有效的Windows error code。
我直接手动到WinCE终端上删除这个文件,也弹出窗口,提示“删除文件失败”。
请大家帮我分析一下如果解决这个问题。谢谢。
...全文
264 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
LuciferStar 2013-01-18
  • 打赏
  • 举报
回复
引用 11 楼 schlafenhamster 的回复:
"\\UPLOAD\\手持上传数据_20130118111800_470370360369.zip" 既不是 相对 路径 ".\\UPLOAD\\手持上传数据_20130118111800_470370360369.zip" 又是 绝对路径 "C:\\UPLOAD\\手持上传数据_20130118111800_470370360369.zip"
CE下,这个路径是对的。
schlafenhamster 2013-01-18
  • 打赏
  • 举报
回复
"\\UPLOAD\\手持上传数据_20130118111800_470370360369.zip" 既不是 相对 路径 ".\\UPLOAD\\手持上传数据_20130118111800_470370360369.zip" 又是 绝对路径 "C:\\UPLOAD\\手持上传数据_20130118111800_470370360369.zip"
看不见的裂痕 2013-01-18
  • 打赏
  • 举报
回复
1. DeleteFile如果文件原来就被占用的话,是删除不了的。一般如果一个函数中Create之后直接DeleteFile 是不成功的,我一般直接PostMessage走消息循环来删除 2. 我看楼主用相对路径,可以尝试下用绝对路径来测试下 3. DeleteFile是不能删除只读文件的,需要使用SHFileOperation来操作
快乐鹦鹉 2013-01-18
  • 打赏
  • 举报
回复
http://download.csdn.net/detail/wxhanshan/2990555 百度一下,看看有没有强制删除文件的方法吧
zhuyf87 2013-01-18
  • 打赏
  • 举报
回复
引用 7 楼 sha_jinhao 的回复:
引用 5 楼 zhuyf87 的回复:引用 4 楼 sha_jinhao 的回复:我想通过GetLastError返回的错误码,获知删除失败的原因(被占用?)。 呵呵。大侠勿笑我,请指点。我是看到msdn里面说如果DeleteFile失败,调用GetLastError获取错误码。 才这么做的。-_-我笑的是 你知道问题所在 还来提问! sorry、 ……
我是想解决问题。这个文件必须被删掉。其实我是写的一个ActiveX插件,网站那边的同事调用我ActiveX里面删除文件的接口。一定要保证这个文件必须删掉(由于业务上的需要)。我在ActiveX里面用的是Remote API。 即使我知道原因,但我现在没法解决掉。请大家出出主意,比如如何强制删除被占用的文件?我搜了一下,很多都是vc删除pc上的被占用文件。我现在想强制删除wince上的被占用文件,而且用的是RAPI。我觉得很难解决。可能要换别的思路了。唉。
jimette 2013-01-18
  • 打赏
  • 举报
回复
引用 5 楼 zhuyf87 的回复:
引用 4 楼 sha_jinhao 的回复:我想通过GetLastError返回的错误码,获知删除失败的原因(被占用?)。 呵呵。大侠勿笑我,请指点。我是看到msdn里面说如果DeleteFile失败,调用GetLastError获取错误码。 才这么做的。-_-
我笑的是 你知道问题所在 还来提问! sorry、
zhuyf87 2013-01-18
  • 打赏
  • 举报
回复
引用 3 楼 LuciferStar 的回复:
CE下比较奇葩的。文件路径要绝对路径。没有CurrentDirectory的概念。
是的。WinCE没有当前目录的概念,也没有C盘,D盘这些。 全部都是挂在到根目录,全路径就是\\Dic\\xx.txt这样。
zhuyf87 2013-01-18
  • 打赏
  • 举报
回复
引用 4 楼 sha_jinhao 的回复:
我想通过GetLastError返回的错误码,获知删除失败的原因(被占用?)。
呵呵。大侠勿笑我,请指点。我是看到msdn里面说如果DeleteFile失败,调用GetLastError获取错误码。 才这么做的。-_-
jimette 2013-01-18
  • 打赏
  • 举报
回复
我想通过GetLastError返回的错误码,获知删除失败的原因(被占用?)。
LuciferStar 2013-01-18
  • 打赏
  • 举报
回复
CE下比较奇葩的。文件路径要绝对路径。没有CurrentDirectory的概念。
zhuyf87 2013-01-18
  • 打赏
  • 举报
回复
引用 1 楼 happyparrot 的回复:
可能被某些进程占用了
嗯。最大的可能就是被占用了。因为我将wince机器重新启动,就可以删除掉了。 但现在我不知道如何能解决这个问题。 也不知道是什么程序占用了这个文件。
快乐鹦鹉 2013-01-18
  • 打赏
  • 举报
回复
可能被某些进程占用了

16,548

社区成员

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

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

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