一、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; }
以上代碼將輸出指定文件夾下的所有文件名。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/254247.html