一、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-hant/n/254247.html
微信掃一掃
支付寶掃一掃