gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 20:01:49 27 4
gpt4 key购买 nike

这段代码中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(): "复制文件内容"

由于在此示例中我复制的是单个文件而不是目录,所以这两个调用是否相同?

(我使用的是 g++ 8.2.0。记得链接到 libstdc++fs 否则你将有对 std::filesystem 的 undefined reference 。)

最佳答案

是的,除非出现错误或您意想不到的情况。

如果 src 被静默替换为目录,它们的行为会有所不同。如果 dst 存在并且是一个目录,我相信它们的行为会有所不同。某些复制选项可能也适用于复制而不适用于 copy_file。

但是当从一个文件复制到另一个文件或复制到一个文件不存在的名称时,copy 调用 copy_file

请注意,无论如何,有人可以删除 foo.txt 并将其替换为您上次检查(比如上一行)和调用 copy< 之间的目录copy_file。在实现健壮的文件系统交互时,你不应该假设文件系统处于特定状态,并确保你的代码是防御性的。为此,如果您打算复制一个文件,请使用 copy_file。 (并始终检查错误。)

关于c++ - std::filesystem::copy() 和 std::filesystem::copy_file() 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51922957/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com