linux c++ 如何实现递归创建文件夹
时间: 2024-01-09 19:03:58 浏览: 475
用c++.net 如何创建 文件夹
在Linux C++中,可以使用mkdir函数递归创建文件夹。mkdir函数原型如下:
```c++
int mkdir(const char *pathname, mode_t mode);
```
其中,`pathname`参数指定需要创建的文件夹路径,`mode`参数指定创建文件夹的权限。
实现递归创建文件夹的方法是,在调用mkdir函数时,先判断需要创建的文件夹是否已经存在,如果不存在则递归调用mkdir函数创建上层目录。
下面是一个递归创建文件夹的示例代码:
```c++
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
#include <iostream>
bool createDir(const std::string& path) {
if(path.empty()) {
return false;
}
int ret = mkdir(path.c_str(), S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH);
if(ret == 0) {
std::cout << "Directory created: " << path << std::endl;
return true;
}
else if(errno == EEXIST) {
std::cout << "Directory already exists: " << path << std::endl;
return true;
}
else {
std::size_t pos = path.find_last_of('/');
if(pos == std::string::npos) {
return false;
}
std::string parentPath = path.substr(0, pos);
if(!createDir(parentPath)) {
return false;
}
return mkdir(path.c_str(), S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH) == 0;
}
}
int main() {
std::string path = "/tmp/test1/test2/test3";
createDir(path);
return 0;
}
```
该代码将创建/tmp/test1/test2/test3目录,如果目录已经存在,则直接返回。如果目录不存在,则递归创建上层目录。注意,权限参数可以根据实际需求进行修改。
阅读全文