Linux c語言操作文件目錄和文件

參考

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;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章