C++拷贝执行目录和子目录下的所有文件
时间: 2023-10-15 15:02:13 浏览: 184
你可以使用递归函数来实现拷贝执行目录和子目录下的所有文件,具体步骤如下:
1. 使用<dirent.h>头文件中的opendir()函数打开当前目录,使用readdir()函数读取当前目录下的所有文件和子目录。
2. 对于每个子目录,使用递归函数来处理,即进入子目录,继续执行步骤1和2,直到找到所有文件。
3. 对于每个文件,使用C++的文件操作函数(如fstream)来读取并写入到目标目录。
下面是一个简单的示例代码:
```c++
#include <iostream>
#include <dirent.h>
#include <fstream>
void copyFiles(const std::string& sourceDir, const std::string& destDir)
{
DIR* dir = opendir(sourceDir.c_str());
dirent* p = nullptr;
while ((p = readdir(dir)) != nullptr) {
if (p->d_type == DT_DIR) {
// 处理子目录
if (strcmp(p->d_name, ".") == 0 || strcmp(p->d_name, "..") == 0) {
continue;
}
std::string subDir = sourceDir + "/" + p->d_name;
copyFiles(subDir, destDir);
}
else if (p->d_type == DT_REG) {
// 处理文件
std::string filePath = sourceDir + "/" + p->d_name;
std::ifstream inFile(filePath, std::ios::binary);
std::ofstream outFile(destDir + "/" + p->d_name, std::ios::binary);
outFile << inFile.rdbuf();
inFile.close();
outFile.close();
}
}
closedir(dir);
}
int main()
{
std::string sourceDir = "./";
std::string destDir = "./copy";
copyFiles(sourceDir, destDir);
return 0;
}
```
这个程序将会拷贝执行目录下的所有文件和子目录到一个名为"copy"的文件夹中。
阅读全文