#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;
}