c++和linux实现遍历路径下所有文件和目录,并输出文件和目录的名称
时间: 2024-03-06 20:50:32 浏览: 86
下面是一个简单的C++和Linux实现遍历路径下所有文件和目录并输出名称的代码示例:
```c++
#include <iostream>
#include <cstring>
#include <dirent.h>
void traverse(const char* path) {
DIR* dir = opendir(path); // 打开目录
if (!dir) {
std::cerr << "Error: failed to open directory " << path << std::endl;
return;
}
struct dirent* entry;
while ((entry = readdir(dir))) { // 读取目录中的文件和子目录
if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0) {
continue; // 忽略当前目录和父目录
}
std::string filepath = std::string(path) + "/" + entry->d_name; // 获取文件路径
if (entry->d_type == DT_DIR) { // 如果是子目录,则递归遍历
std::cout << "Directory: " << filepath << std::endl;
traverse(filepath.c_str());
} else { // 如果是文件,则输出文件名
std::cout << "File: " << entry->d_name << std::endl;
}
}
closedir(dir); // 关闭目录
}
int main(int argc, char* argv[]) {
if (argc < 2) {
std::cerr << "Usage: " << argv[0] << " [path]" << std::endl;
return 1;
}
traverse(argv[1]);
return 0;
}
```
该代码实现了一个`traverse()`函数,用于遍历指定路径下的所有文件和子目录。在遍历过程中,如果遇到子目录,则递归调用`traverse()`函数遍历子目录。如果遇到文件,则输出文件名。
在`main()`函数中,通过命令行参数获取需要遍历的路径,并调用`traverse()`函数进行遍历。
阅读全文