读取指定目录下的所有文件和目录

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dirent.h>
#include <sys/types.h>
/* g++ -o test test.cc */

int main(int argc, char *argv[]) {
    /**打开指定路径,将路径下的目录和文件列表保存到DIR内*/
    DIR *dirptr = NULL;
    if ((dirptr = opendir("./")) == NULL) {
        fprintf(stderr, "open %s NG.\n", "./");
        return -1;
    }

    /**逐条读取文件名或者目录名*/
    struct dirent *entry;
    while ((entry = readdir(dirptr))) {
        printf("d_ino = %ld\n", entry->d_ino);/* inode number 索引节点号 */
        printf("d_off = %d\n", entry->d_off); /* offset to this dirent 在目录文件中的偏移 */
        printf("d_reclen = %d\n", entry->d_reclen);/* length of this d_name 文件名长 */
        printf("d_type = %02X\n", entry->d_type);/* the type of d_name 文件类型  04:目录, 08:文件 */

        /**目录下默认有以. 开头的隐藏文件或者文件夹 */
        if (0 == strncmp(".", entry->d_name, 1)) {
            printf("header file name  = %s\n\n", entry->d_name);
            continue;
        }
        printf("file name  = %s\n\n", entry->d_name);
    }
    /* 关闭 当前路径*/
    if (closedir(dirptr) < 0) {
        printf("%s NG\n", "closedir");
        return -1;
    }
    return 0;
}

 

posted @ 2018-08-14 16:44  Chris83  阅读(382)  评论(0编辑  收藏  举报