21xrx.com
2024-12-22 21:12:49 Sunday
登录
文章检索 我的文章 写文章
使用C++复制文件夹
2023-07-05 11:02:17 深夜i     --     --
C++ 复制 文件夹

C++是一种流行的编程语言,用于开发各种类型的应用程序。复制文件夹是一个常见的任务,特别是在需要备份或移动数据时。在C++中,复制文件夹可以使用一些简单的代码实现。

首先,需要使用C++的 头文件来处理文件和文件夹。在这个例子中,我们定义了三个函数,分别是copyFile函数、copyDir函数和main函数。

copyFile函数的作用是复制单个文件。它需要两个参数,一个是源文件的路径,另一个是目标文件的路径。在函数中,我们首先打开源文件,然后创建目标文件并将源文件的内容写入到目标文件中。最后,关闭源文件和目标文件。

copyDir函数的作用是复制整个文件夹。它需要两个参数,一个是源文件夹的路径,另一个是目标文件夹的路径。在函数中,我们首先创建目标文件夹,然后使用 头文件中的函数列举源文件夹中的文件和文件夹。如果遍历到的是文件,则调用copyFile函数来复制文件。如果遍历到的是文件夹,则递归调用copyDir函数来复制整个文件夹。

在main函数中,我们首先获取源文件夹和目标文件夹的路径,然后调用copyDir函数来复制整个文件夹。

以下是完整的代码示例:


#include <fstream>

#include <dirent.h>

using namespace std;

void copyFile(string source, string destination) {

  ifstream src(source, std::ios::binary);

  ofstream dest(destination, std::ios::binary);

  dest << src.rdbuf();

}

void copyDir(string source, string destination) {

  DIR* dir_source = opendir(source.c_str());

  if (dir_source == NULL)

    return;

  

  struct dirent* file = readdir(dir_source);

  while (file != NULL) {

    string filepath = source + "/" + file->d_name;

    string destpath = destination + "/" + file->d_name;

    if (file->d_type == DT_DIR) {

      if (file->d_name[0] != '.') {

        mkdir(destpath.c_str(), 0777);

        copyDir(filepath, destpath);

      }

    } else {

      copyFile(filepath, destpath);

    }

    file = readdir(dir_source);

  }

  closedir(dir_source);

}

int main() {

  string source = "/Users/username/source_dir";

  string destination = "/Users/username/destination_dir";

  copyDir(source, destination);

  return 0;

}

使用上述代码,你可以轻松地复制一个文件夹。请注意,代码仅适用于Unix系统,Windows系统的实现方式将有所不同。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复