c++使用 dirent * ptr 遍历三层文件夹里面的文件
时间: 2024-10-16 22:10:25 浏览: 8
在C++中,`dirent*`结构体通常用于处理目录遍历,特别是当使用POSIX API(如`opendir()`, `readdir()`, 和 `closedir()`)时。如果你想要遍历三层文件夹内的所有文件,你需要嵌套三层循环来完成这个任务:
```cpp
#include <sys/types.h>
#include <dirent.h>
#include <stdio.h>
void traverseDirectories(const std::string& baseDir) {
DIR* dir;
struct dirent* entry;
// 打开目录
if ((dir = opendir(baseDir.c_str())) != NULL) {
// 主目录遍历
while ((entry = readdir(dir)) != NULL) {
std::string filePath = baseDir + "/" + entry->d_name;
// 如果是目录,则递归遍历子目录
if (entry->d_type == DT_DIR && entry->d_name != "." && entry->d_name != "..") {
traverseDirectories(filePath);
} else { // 文件
printf("%s\n", filePath.c_str());
}
}
// 关闭目录句柄
closedir(dir);
} else {
perror("Error opening directory");
}
}
int main() {
traverseDirectories("/path/to/first/directory"); // 替换为你要遍历的实际路径
return 0;
}
```
在这个示例中,我们首先打开指定的目录,然后在主循环里读取每个条目。如果是子目录,我们会递归地调用`traverseDirectories`函数;如果是文件,就打印出来。
阅读全文