一、Linux系统下的文件遍历
在Linux系统下,可以使用dirent.h库中的函数来遍历文件夹下所有文件。具体实现步骤如下:
#include#include int main() { DIR *dir; struct dirent *dir_info; dir = opendir("/path/to/folder"); // 文件夹路径 if (dir) { while ((dir_info = readdir(dir)) != NULL) { printf("%s\n", dir_info->d_name); } closedir(dir); } return 0; }
以上代码将遍历指定文件夹下的所有文件,并输出文件名。
二、C语言遍历文件夹下的文件及文件夹
如果需要遍历文件夹下的所有文件和文件夹,可以使用递归函数实现。具体实现步骤如下:
#include#include #include #include // 遍历文件夹下所有文件及文件夹 void traverse_folder(char *folder_path) { DIR *dir; struct dirent *dir_info; char sub_folder_path[256] = {0}; // 文件夹路径 dir = opendir(folder_path); if (dir) { while ((dir_info = readdir(dir)) != NULL) { if (strcmp(dir_info->d_name, ".") == 0 || strcmp(dir_info->d_name, "..") == 0) { continue; } printf("%s/%s\n", folder_path, dir_info->d_name); if (dir_info->d_type == DT_DIR) { sprintf(sub_folder_path, "%s/%s", folder_path, dir_info->d_name); traverse_folder(sub_folder_path); } } closedir(dir); } } int main() { traverse_folder("/path/to/folder"); // 文件夹路径 return 0; }
以上代码将输出指定文件夹下的所有文件和文件夹路径。
三、C语言遍历文件夹下所有文件名
如果只需要遍历文件夹下的所有文件名,可以将文件名存储在数组中。具体实现步骤如下:
#include#include #include #include // 遍历文件夹下所有文件名 void traverse_folder(char *folder_path, char file_name_array[][256], int *file_count) { DIR *dir; struct dirent *dir_info; char sub_folder_path[256] = {0}; // 文件夹路径 dir = opendir(folder_path); if (dir) { while ((dir_info = readdir(dir)) != NULL) { if (strcmp(dir_info->d_name, ".") == 0 || strcmp(dir_info->d_name, "..") == 0) { continue; } if (dir_info->d_type == DT_DIR) { sprintf(sub_folder_path, "%s/%s", folder_path, dir_info->d_name); traverse_folder(sub_folder_path, file_name_array, file_count); } else if (dir_info->d_type == DT_REG) { strcpy(file_name_array[*file_count], dir_info->d_name); (*file_count)++; } } closedir(dir); } } int main() { char file_name_array[1000][256] = {0}; // 文件名数组,最多存1000个文件名 int file_count = 0; traverse_folder("/path/to/folder", file_name_array, &file_count); // 文件夹路径 for (int i = 0; i < file_count; i++) { printf("%s\n", file_name_array[i]); } return 0; }
以上代码将输出指定文件夹下的所有文件名。
四、遍历文件夹下的所有文件夹名称
如果只需要遍历文件夹下的所有文件夹名称,可以将文件夹名称存储在数组中。具体实现步骤如下:
#include#include #include #include // 遍历文件夹下所有文件夹名称 void traverse_folder(char *folder_path, char folder_name_array[][256], int *folder_count) { DIR *dir; struct dirent *dir_info; char sub_folder_path[256] = {0}; // 文件夹路径 dir = opendir(folder_path); if (dir) { while ((dir_info = readdir(dir)) != NULL) { if (strcmp(dir_info->d_name, ".") == 0 || strcmp(dir_info->d_name, "..") == 0) { continue; } if (dir_info->d_type == DT_DIR) { strcpy(folder_name_array[*folder_count], dir_info->d_name); (*folder_count)++; sprintf(sub_folder_path, "%s/%s", folder_path, dir_info->d_name); traverse_folder(sub_folder_path, folder_name_array, folder_count); } } closedir(dir); } } int main() { char folder_name_array[1000][256] = {0}; // 文件夹名称数组,最多存1000个文件夹名称 int folder_count = 0; traverse_folder("/path/to/folder", folder_name_array, &folder_count); // 文件夹路径 for (int i = 0; i < folder_count; i++) { printf("%s\n", folder_name_array[i]); } return 0; }
以上代码将输出指定文件夹下的所有文件夹名称。
五、Shell遍历文件夹下所有文件
Shell语言也可以遍历文件夹下所有文件。具体实现步骤如下:
#!/bin/bash # 遍历文件夹下所有文件 function traverse_folder() { for file in "$1"/* do if [ -d "$file" ]; then traverse_folder "$file" elif [ -f "$file" ]; then echo "$file" fi done } traverse_folder "/path/to/folder" # 文件夹路径
以上代码将输出指定文件夹下的所有文件名。
六、C++遍历文件夹
C++语言也可以遍历文件夹。具体实现步骤如下:
#include#include namespace fs = std::filesystem; // 遍历文件夹 void traverse_folder(const std::string &folder_path) { for (const auto &entry : fs::directory_iterator(folder_path)) { if (entry.is_directory()) { traverse_folder(entry.path().string()); } else if (entry.is_regular_file()) { std::cout << entry.path().string() << std::endl; } } } int main() { traverse_folder("/path/to/folder"); // 文件夹路径 return 0; }
以上代码将输出指定文件夹下的所有文件名。