代码之家  ›  专栏  ›  技术社区  ›  Stéphane

std::filesystem::copy()和std::filesystem::copy_file()有什么区别?

  •  2
  • Stéphane  · 技术社区  · 8 年前

    有什么区别 std::filesystem::copy() std::filesystem::copy_file() 在这个密码里?

    #include <filesystem>
    
    void testing()
    {
        const std::filesystem::path src = "foo.txt";
        const std::filesystem::path dst = "bar.txt";
    
        std::filesystem::copy(     src, dst, std::filesystem::copy_options::overwrite_existing);
        std::filesystem::copy_file(src, dst, std::filesystem::copy_options::overwrite_existing);
    }
    

    • copy() :“复制文件或目录”
    • copy_file() :“复制文件内容”

    因为我复制的是一个文件而不是本例中的目录,所以这两个调用是否相同?

    2 回复  |  直到 8 年前
        1
  •  4
  •   Yakk - Adam Nevraumont    8 年前

    是的,除非有错误或是你不期望的情况。

    如果 src 被一个目录取代,他们的行为不同。如果 dst 存在并且是一个目录,我相信他们会有不同的行为。有些复制选项可能适用于复制而不是复制文件。

    copy 调用 copy_file

    注意,有人可以删除 foo.txt 并将其替换为上次检查(如前一行)和调用 复制 . 在实现健壮的文件系统交互时,不应假定文件系统处于特定状态,并确保代码是防御性编写的。为此,如果要复制一个文件,请使用 . (并始终检查错误。)

        2
  •  4
  •   1201ProgramAlarm    8 年前

    copy_options 您正在使用,并且源文件是一个文件(而不是一个目录), copy 将调用 copy_file

    推荐文章