一、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/n/254247.html
微信扫一扫
支付宝扫一扫