我无法通过 C++ 移动文件(MoveFile、MoveFileEx、filesystem::rename)

问题描述 投票:0回答:1

我试图编写一个简单的程序将文件从目录 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,以管理员身份运行,并尝试其他文件移动解决方案,但似乎都不起作用。

c++ file
1个回答
0
投票

您的dest路径值存在

至少一个
问题,可能有两个问题。

  1. 如果对

    std::filesystem::rename
    的调用中的源是非目录文件(如您的文件一样),则目标也必须是非目录文件。

  2. 即使新文件(尚)不存在,您要放置该文件的目录*必须存在(下面链接的页面中的第三个辅助项目符号)。

因此,首先确保您的

C:\\Users\\user1\\testfolder\\destination
文件夹存在,然后将目标 filename 添加到指定的目标路径,如下所示:

const char* dest = "C:\\Users\\user1\\testfolder\\destination\\test.txt";

进一步参考:cppreference

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.