MoveFile()工作,但返回错误2(文件未找到)

问题描述:

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

可能是什么问题?

的代码是:

_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(); 
+0

[CopyFile](http://msdn.microsoft.com/en-us/library/windows/desktop/aa363851(v = vs.85).aspx)的第三个参数表示如果存在dest文件,调用应该失败。所以如果你为同一个文件运行它不止一次,它会失败。我认为这是错误来自的地方。 – A4L 2013-03-11 12:57:23

+0

试试这个:: if(!MoveFile(szSrcPath,szDestPath)){err = GetLastError(); }现在告诉我们,你的“err”包含了什么。 – Abhineet 2013-03-11 13:01:11

+0

“MoveFile()”是一个C函数吗? – Abhineet 2013-03-11 13:02:37

,出现错误代码,如果函数成功,该值是无效的。而是检查实际函数返回的值(即MoveFile函数返回值),如果该值指示发生错误,则可以检查错误是什么,然后

你只是为了打电话GetLastError如果API函数调用报告的故障。检查CopyFileMoveFile的返回值。如果要么返回FALSE,那么API调用失败,然后才有效,请调用GetLastError

documentation指出这样的:

返回值

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

如果函数失败,返回值为零。要获得扩展错误 的信息,请致电GetLastError

发生了什么是MoveFile成功,并且不会修改上一个错误值。然后,当您拨打GetLastError时,它会返回一个其他呼叫API函数的错误代码,该错误代码发生在您拨打MoveFile之前。你应该写这样的代码:

if (!MoveFile(szSrcPath,szDestPath)) 
{ 
    DWORD err = GetLastError(); 
    // handle the error 
} 
+0

@ 0xC0000022L没有意义 – 2015-09-08 14:35:44