C/C++遍历目录

C/C++遍历目录

目录文件的表示

struct dirent { 
             ino_t      d_ino;                /* inode的编号*/
             __uint16_t d_reclen;             /* 这条记录的长度 */
             __uint8_t  d_type;               /* 文件类型 */
             __uint8_t  d_namlen;             /* 文件名的长度,中文占两个*/
             char    d_name[255 + 1];   /* 文件名,根据系统会有不同*/
     };

d_type的取值

#define DT_UNKNOWN       0
#define DT_FIFO          1
#define DT_CHR           2
#define DT_DIR           4
#define DT_BLK           6
#define DT_REG           8
#define DT_LNK          10
#define DT_SOCK         12
#define DT_WHT          14

实例

#include <iostream>
#include <dirent.h> // 或 #include <sys/dir.h>

int main() {
    DIR *dp; // 目录指针
    struct dirent *dirp; // 目录文件指针

    dp = opendir("."); // 打开一个目录

    if (!dp)
    {
        return 0;
    }

    // 读取目录问价
    while ((dirp = readdir(dp)) != nullptr) {
        std::cout << "file name=" << dirp->d_name
                  << ", name len=" << dirp->d_namlen
                  << ", ino=" << dirp->d_ino
                  << ", reclen=" << dirp->d_reclen
                  << ", seek off=" << dirp->d_seekoff
                  << ", type=" << dirp->d_type
                  << std::endl;
    }

    closedir(dp);

    return 0;
}
声明:原创文章,版权所有,转载请注明出处,https://litets.com。