在linux下使用c++遍历子文件夹,检查是否存在指定文件
时间: 2024-05-06 21:21:02 浏览: 89
c++遍历文件夹
可以使用递归方式遍历当前目录下的所有文件和文件夹,递归过程中检查每个文件夹中是否存在指定文件。可以使用 opendir、readdir 和 closedir 函数来实现这个功能。具体实现可以参考以下代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dirent.h>
int check_file_exists(char *folder_path, char *file_name) {
DIR* dir = opendir(folder_path);
if (dir == NULL) {
fprintf(stderr, "Can't open folder: %s\n", folder_path);
return 0;
}
struct dirent *entry;
while ((entry = readdir(dir)) != NULL) {
if (entry->d_type == DT_DIR && strcmp(entry->d_name, ".") != 0 && strcmp(entry->d_name, "..") != 0) {
// Recursively check sub directories
char sub_path[200];
sprintf(sub_path, "%s/%s", folder_path, entry->d_name);
if (check_file_exists(sub_path, file_name)) {
closedir(dir);
return 1;
}
}
else if (entry->d_type == DT_REG) {
if (strcmp(entry->d_name, file_name) == 0) {
closedir(dir);
return 1;
}
}
}
closedir(dir);
return 0;
}
int main() {
char *folder_path = "/path/to/folder";
char *file_name = "test.txt";
if (check_file_exists(folder_path, file_name)) {
printf("%s exists in %s\n", file_name, folder_path);
}
else {
printf("%s does not exist in %s\n", file_name, folder_path);
}
return 0;
}
```
这个程序可以判断指定文件在指定目录及其子目录中是否存在。你可以将 folder_path 和 file_name 替换成你需要判断的目录路径和文件名。
阅读全文