1、使用scandir接口
bool getDirentInfo(char *dirName) {
struct dirent **namelist;
int num;
struct stat tStat;
num = scandir(dirName, &namelist, NULL, alphasort);
if (num < 0) {
printf("scandir fail\n");
}
while (num--) {
if (stat(namelist[num]->d_name, &tStat) == 0) {
if (S_ISDIR(tStat.st_mode)) {
printf("%s is dirent\n", namelist[num]->d_name);
} else if (S_ISREG(tStat.st_mode)) {
printf("%s is file\n", namelist[num]->d_name);
}
}
free(namelist[num]);
}
free(namelist);
return false;
}
2、使用opendir和readdir接口
bool getDirentInfo(char *dirName) {
DIR *dir_info;
struct dirent *dir_entry;
struct stat tStat;
dir_info = opendir(dirName);
if (dir_info == NULL) {
printf("can not open %s dirent\n", dirName);
}
printf("%s\n", dirName);
chdir(dirName);//需要切换到对应目录
while ((dir_entry = readdir(dir_info)) != NULL) {
if (stat(dir_entry->d_name, &tStat) == 0) {
if (S_ISDIR(tStat.st_mode)) {
printf("%s \t\tis dirent\n", dir_entry->d_name);
} else if (S_ISREG(tStat.st_mode)) {
printf("%s \t\tis file\n", dir_entry->d_name);
}
}
}
closedir(dir_info);
chdir("-");
return true;
}