应用boost::filesystem递归拷贝目录树
2010-12-21 09:10
260 查看
操作系统提供的API通常不支持直接拷贝目录树。不过,可以通过递归的方法实现。下面,我们用boost的filesystem库实现该功能。
是不是很简洁呢?该函数不仅可以拷贝目录树,还可以拷贝单个文件,而且输入参数可以是相对路径,您可以试试。
// recusively copy file or directory from $src to $dst void CopyFiles(const boost::filesystem::path &src, const boost::filesystem::path &dst) { if (! boost::filesystem::exists(dst)) { boost::filesystem::create_directories(dst); } for (boost::filesystem::directory_iterator it(src); it != boost::filesystem::directory_iterator(); ++it) { const boost::filesystem::path newSrc = src / it->filename(); const boost::filesystem::path newDst = dst / it->filename(); if (boost::filesystem::is_directory(newSrc)) { CopyFiles(newSrc, newDst); } else if (boost::filesystem::is_regular_file(newSrc)) { boost::filesystem::copy_file(newSrc, newDst, boost::filesystem::copy_option::overwrite_if_exists); } else { _ftprintf(stderr, "Error: unrecognized file - %s", newSrc.string().c_str()); } } }
是不是很简洁呢?该函数不仅可以拷贝目录树,还可以拷贝单个文件,而且输入参数可以是相对路径,您可以试试。
相关文章推荐
- 数据结构复习_栈和队列,应用_括号匹配&文件目录递归拷贝,
- Android 手机sdcard目录或文件的拷贝、移动、删除(递归)
- C# 文件操作 全收录 追加、拷贝、删除、移动文件、创建目录、递归删除文件夹及文件转http://www.cnblogs.com/zhuzhiyuan/archive/2011/04/22/2024485.html
- 无法访问到该应用的备份接口,请拷贝 UCenter 根目录下api/dbbak.php 到该应用的api目录的问题
- C# 文件操作 全收录 追加、拷贝、删除、移动文件、创建目录、递归删除文件夹及文件
- [随笔]Linux下,如何将一个文件及其所在的递归路径一起拷贝到目标目录?
- Qt递归拷贝和删除目录
- C# 文件操作 全收录 追加、拷贝、删除、移动文件、创建目录、递归删除文件夹及文件....
- Perl篇:递归遍历及拷贝文件共享服务器中目录
- c++ boost (递归)遍历目录
- 利用boost.filesystem实现跨平台的复制目录功能
- 2.1 linux文件系统应用实例:递归遍历目录
- C# 文件操作 全收录 追加、拷贝、删除、移动文件、创建目录、递归删除文件夹及文件
- 使用boost中的filesystem类库遍历某个目录所有的文件
- C# 文件操作 全收录 追加、拷贝、删除、移动文件、创建目录、递归删除
- Qt递归拷贝和删除目录
- C# 文件操作 全收录 追加、拷贝、删除、移动文件、创建目录、递归删除文件夹及文件....
- C# 文件操作 全收录 追加、拷贝、删除、移动文件、创建目录、递归删除文件夹及文件....
- [转]C# 文件操作 全收录 追加、拷贝、删除、移动文件、创建目录、递归删除文件夹及文件....
- C# 文件操作 全收录 追加、拷贝、删除、移动文件、创建目录、递归删除文件夹及文件....