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

MoveFile() Works, but returns error 2 (file not found)

本文关键字:文件 返回 工作 MoveFile 错误      更新时间:2023-10-16

我正在使用Movefile()函数(在C中)。我可以看到文件从源文件夹移动到目的地(意味着Movefile成功),但当我做GetLastError()时,我得到错误编号。2 (ERROR_FILE_NOT_FOUND)。

有什么问题吗?

代码是:

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

Do not如果函数成功,则得到错误码,值无效。相反,检查实际函数返回的值(即MoveFile函数返回值),如果这表明发生了错误,然后您可以检查错误是什么。

如果API函数调用报告失败,则只意味着调用GetLastError。检查CopyFileMoveFile的返回值。如果其中一个返回FALSE,那么API调用失败,然后,只有这样,调用GetLastError是有效的。

文档是这样描述的:

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

如果函数失败,返回值为零。得到扩展误差信息,调用GetLastError

发生的是MoveFile成功并且没有修改最后一个错误值。然后,当您调用GetLastError时,它返回在调用MoveFile之前发生的对API函数的其他调用的错误代码。你应该这样写代码:

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