读取指定目录下的所有文件和目录
#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; }