參考
linux c 遍歷目錄及文件
Linux c 遍歷目錄及目錄下文件
獲取文件屬性—stat、lstat、fstat
linux C語言遍歷文件夾所有文件
方法
stat與lstat的區別,當一個文件是符號鏈接時,lstat返回的是該符號鏈接本身的信息,stat返回的是該鏈接指向文件的信息
dir = opendir(path);
while ((ent = readdir(dir)) != NULL)
{
if(!strcmp(ent->d_name, ".") || !strcmp(ent->d_name, ".."))
continue;
sprintf(p, "%s/%s", path, ent->d_name);
stat(p, &st);
if (S_ISDIR(st.st_mode)) {
//printf("%s\n", dp->d_name);
if (json) {
item = cJSON_CreateObject();
cJSON_AddStringToObject(item, "name", ent->d_name);
cJSON_AddNumberToObject(item, "type", 0);
sub_num = local_file_ls(ent->d_name, NULL);
cJSON_AddNumberToObject(item, "size", sub_num);
cJSON_AddItemToArray(json, item);
}
} else if (S_ISREG(st.st_mode)) {
//printf("%s/\n", dp->d_name);
if (json) {
item = cJSON_CreateObject();
cJSON_AddStringToObject(item, "name", ent->d_name);
cJSON_AddNumberToObject(item, "type", 1);
cJSON_AddNumberToObject(item, "size", st.st_size);
cJSON_AddItemToArray(json, item);
}
} else {
continue;
}
item_num++;
}
ret:
return item_num;