Unix下的C ++复制目录递归

亚伯拉卜

没有可用于c++ without additional libs将递归文件和文件夹复制到新位置的功能的任何示例

一些替代方法system("cp -R -f dir");

我仅在线程答案的C示例中找到此递归目录复制,但尚未准备好使用,并且我不确定此示例是否正确。

也许有人在磁盘上有工作示例?

埃雷里卡

这是使用POSIX和标准库函数进行递归复制的完整运行示例。

#include <string>
#include <fstream>

#include <ftw.h>
#include <sys/stat.h>

const char* src_root ="foo/";
std::string dst_root ="foo2/";
constexpr int ftw_max_fd = 20; // I don't know appropriate value for this

extern "C" int copy_file(const char*, const struct stat, int);

int copy_file(const char* src_path, const struct stat* sb, int typeflag) {
    std::string dst_path = dst_root + src_path;
    switch(typeflag) {
    case FTW_D:
        mkdir(dst_path.c_str(), sb->st_mode);
        break;
    case FTW_F:
        std::ifstream  src(src_path, std::ios::binary);
        std::ofstream  dst(dst_path, std::ios::binary);
        dst << src.rdbuf();
    }
    return 0;
}

int main() {
    ftw(src_root, copy_file, ftw_max_fd);
}

请注意,使用标准库进行的琐碎文件复制不会复制源文件的模式。它还深复制链接。可能还会忽略我未提及的一些细节。如果需要以不同方式处理这些功能,请使用POSIX特定功能。

我建议改用Boost,因为它可以移植到非POSIX系统,并且新的c ++标准文件系统API将基于它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Unix复制递归,包括所有目录

来自分类Dev

无法递归复制隐藏目录-UNIX

来自分类Dev

如何在不维护目录层次结构的情况下递归复制目录内容?

来自分类Dev

在命令提示符下将文件的所有子目录递归复制到目录

来自分类Dev

在Unix上复制目录

来自分类Dev

递归复制目录的*内容*

来自分类Dev

Symlink非递归复制目录

来自分类Dev

递归复制,隐藏目录除外

来自分类Dev

递归复制和覆盖目录

来自分类Dev

C-递归复制文件

来自分类Dev

C-递归复制文件

来自分类Dev

递归处理UNIX目录中的文件

来自分类Dev

如何递归复制/下载整个webdav目录?

来自分类Dev

如何防止递归复制文件和目录?

来自分类Dev

如何递归复制/下载整个webdav目录?

来自分类Dev

rsync非递归复制目录内容

来自分类Dev

递归复制给定名称的目录

来自分类Dev

递归复制文件而不保留目录

来自分类Dev

从目录中递归最小地复制文件

来自分类Dev

C-递归打印目录和文件

来自分类Dev

在C ++ wxDir中非递归地迭代目录

来自分类Dev

无法在C中递归读取目录/文件

来自分类Dev

在C#中使用根目录进行递归搜索目录

来自分类Dev

递归列出目录中的所有文件(Unix)

来自分类Dev

递归列出目录中的所有文件(Unix)

来自分类Dev

防止Unix“查找”命令递归到匹配的目录中

来自分类Dev

如何在c中不使用任何递归函数的情况下遍历目录?

来自分类Dev

如何在不复制终端中特定文件或子目录的情况下复制目录?

来自分类Dev

如何在不复制终端中特定文件或子目录的情况下复制目录?