复制文件成功,移动文件失败,参数相同 - C++

CopyFile succeed, MoveFile fails with the same parameters - C++

本文关键字:文件 C++ 失败 成功 移动 复制 参数      更新时间:2023-10-16

我正在处理一个非常令人沮丧的问题C++。 我需要使用移动文件功能,但这失败了。现在我像这样使用复制文件:

partialresult = L"D:\CppWork\test2\decToBin.exe";
finala = L"D:\CppWork\test2\PeFiles_\decToBin.exe";
if (0 == CopyFile(partialresult, finala,b)) {/////
DWORD err = GetLastError();
std::cout << " -> Copy Fail" << std::endl;
}

复制工作正常,但是如果我用移动文件替换复制文件(不更改路径(失败,代码0x20(MSDN doc ->ERROR_FILE_NOT_FOUND(。 此外,如果我尝试将 MoveFile 替换为 CopyFile,然后从预览路径中删除文件,则复制有效,但删除再次失败并ERROR_FILE_NOT_FOUND

bool b = false;
if (0 == CopyFile(partialresult, finala,b)) {//copy works but when try to delete the file give error
DWORD err = GetLastError();
std::cout << " -> Copy Fail" << std::endl;
outFile   << " -> Copy Fail" << std::endl;
}
else {
std::cout << " -> Copy Done" << std::endl;
outFile   << " -> Copy Done" << std::endl;
if (!DeleteFile(partialresult))
DWORD err= GetLastError(); //error is "ERROR_FILE_NOT_FOUND"
}

有没有人知道这里发生了什么? 谢谢。

我已经解决了 CreateFile 的问题,方法是在该过程完成后将它们标记为删除:

CreateFile(path, GENERIC_READ,FILE_SHARE_DELETE,NULL, OPEN_EXISTING, FILE_FLAG_DELETE_ON_CLOSE,NULL);

谢谢大家:)