首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MoveFile()可以工作,但返回错误2(找不到文件)

MoveFile()可以工作,但返回错误2(找不到文件)
EN

Stack Overflow用户
提问于 2013-03-11 20:50:42
回答 2查看 1.9K关注 0票数 1

我使用的是函数Movefile() (在C中)。我可以看到文件从源文件夹移动到目标文件夹(意味着MoveFile成功),但是当我执行GetLastError()时,我得到了错误2 (ERROR_FILE_NOT_FOUND)。

会有什么问题呢?

代码是:

代码语言:javascript
复制
_snprintf(szSrcPath, MAX_PATH, "%s/%s/%s.jpg", NPath, imagePathFromAdmin, username);
_snprintf(szDestPath, MAX_PATH, "%s/Images/Storage/%s/%d/%s.jpg", NPath, domain, sub_folder, username);
strcpy(imagePathStorgae,szDestPath);
MoveFile(szSrcPath,szDestPath);
err=GetLastError();
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-11 20:54:56

如果函数成功,则不获取错误码,该值无效。相反,检查由实际函数返回的值(即MoveFile函数返回值),如果这表明发生了错误,那么您可以检查错误是什么。

票数 7
EN

Stack Overflow用户

发布于 2013-03-11 20:54:38

只有在接口函数调用报告失败时,才应该调用GetLastError。检查CopyFileMoveFile的返回值。如果其中一个返回FALSE,则API调用失败,然后,也只有在那时,才能有效地调用GetLastError

documentation是这样声明的:

返回值

如果函数成功,则返回值为非零。

如果函数失败,则返回值为零。要获取扩展的错误信息,请调用GetLastError

发生的情况是,MoveFile成功了,并且不修改最后一个错误值。然后,当您调用API时,它会返回一个错误代码,这是在您调用MoveFile之前对某个GetLastError函数进行的调用。您应该像这样编写代码:

代码语言:javascript
复制
if (!MoveFile(szSrcPath,szDestPath))
{
    DWORD err = GetLastError();
    // handle the error
}
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15339045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档