微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 std::filesystem::copy 在 C++ 中复制目录?

如何解决如何使用 std::filesystem::copy 在 C++ 中复制目录?

所以,我正在尝试做一些应该很简单的事情。我正在使用 std::filesystem::copy一个目录复制到另一个目录中,例如:

#include <filesystem>

int main (int argc,char* argv[])
{
    const char* dir1 = "C:\\Users\\me\\folder";
    const char* dir2 = "C:\\Users\\me\\folder_copy";
    std::filesystem::copy(dir1,dir2,std::filesystem::copy_options::update_existing);

    return 0;
}

但是,当 folder_copy 已经存在时,上面对我来说崩溃了,并出现以下错误

Unhandled exception at 0x00007FF932E9A308 in code.exe: Microsoft C++ exception: std::filesystem::filesystem_error at memory location 0x00000012188FF6D0.

有趣的是,标志 std::filesystem::copy_options::overwrite_existing 对我来说很好用。 update_existingstd::filesystem::copy 不兼容吗?如果它只适用于 std::filesystem::copy_file 会很奇怪。

无论如何,如果这是设计使然,我该如何复制目录,同时只更新过时的文件

解决方法

尝试:

int main (int argc,char* argv[])
{
    namespace fs = std::filesystem;
    const char* dir1 = "C:/Users/me/folder";
    const char* dir2 = "C:/Users/me/folder_copy";

    try {
        fs::copy(dir1,dir2,fs::copy_options::update_existing
            //|fs::copy_options::overwrite_existing
            |fs::copy_options::recursive);
    }
    catch (const fs::filesystem_error& e) {
        cerr << e.what() << endl;
    }

    return 0;
}

还要检查在更新时目标文件夹中没有正在使用的文件,并且您有足够的写入权限。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。