如果需要递归创建呢?
时间: 2023-11-11 17:02:25 浏览: 37
如果需要递归地创建文件夹(包括创建嵌套的子文件夹),你可以使用递归的方式来实现。下面是一个示例代码,展示了如何使用递归方式在 C++ 中创建文件夹:
```cpp
#include <iostream>
#include <sys/stat.h>
bool createDirectory(const std::string& path) {
int status = mkdir(path.c_str(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
if (status == 0) {
std::cout << "Created directory: " << path << std::endl;
return true;
} else if (errno == ENOENT) {
// 父目录不存在,递归创建父目录
size_t pos = path.find_last_of('/');
if (pos != std::string::npos) {
std::string parentPath = path.substr(0, pos);
if (!createDirectory(parentPath)) {
return false;
}
// 创建子目录
return mkdir(path.c_str(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) == 0;
}
}
return false;
}
int main() {
std::string folderPath = "/path/to/recursive/folder";
if (createDirectory(folderPath)) {
std::cout << "Recursive folder creation successful." << std::endl;
} else {
std::cerr << "Failed to create recursive folder." << std::endl;
}
return 0;
}
```
在示例代码中,`createDirectory` 函数递归地创建文件夹。如果 `mkdir` 函数返回 0,表示成功创建文件夹;如果返回 ENOENT(父目录不存在),则递归创建父目录并再次尝试创建子目录。递归的终止条件是当没有 '/' 字符时,即达到了最顶层目录。
你需要将 `"/path/to/recursive/folder"` 替换为你想要创建的文件夹路径。在执行程序时,确保程序运行的用户有足够的权限来创建文件夹。
请注意,递归创建文件夹可能涉及到对文件系统的写操作,请谨慎使用,并确保已经验证和过滤了用户输入的路径。