我试图编写一个简单的程序将文件从目录 A 移动到目录 B,最后文件移动部分不断给出 ACCESS DENIED 错误等等。这是代码
const char* src = "C:\\Users\\user1\\testfolder\\source\\test.txt";
const char* dest = "C:\\Users\\user1\\testfolder\\destination";
try {
std::filesystem::rename(src, dest);
}
catch (std::filesystem::filesystem_error& e) {
std::cout << e.what() << '\n';
}
return 0;
这会打印错误“访问被拒绝”
VS2022正在以管理员身份运行。 C++ 版本是 C++ 17。 该文件可以通过cmd毫无问题地移动。
MoveFile 退出并出现错误 183 MoveFileEx(src,dest,MOVEFILE_REPLACE_EXISTING) 退出并出现错误 5(访问被拒绝)
我尝试重新启动 VS,以管理员身份运行,并尝试其他文件移动解决方案,但似乎都不起作用。
您的dest
路径值存在
至少一个问题,可能有两个问题。
如果对
std::filesystem::rename
的调用中的源是非目录文件(如您的文件一样),则目标也必须是非目录文件。
即使新文件(尚)不存在,您要放置该文件的目录*必须存在(下面链接的页面中的第三个辅助项目符号)。
因此,首先确保您的
C:\\Users\\user1\\testfolder\\destination
文件夹存在,然后将目标 filename 添加到指定的目标路径,如下所示:
const char* dest = "C:\\Users\\user1\\testfolder\\destination\\test.txt";
进一步参考:cppreference