struct dirent
#include <dirent.h>
struct dirent
long d_ino; //inode number 索引节点号
off_t d_off; //offset to this dirent 在目录文件中的偏移
unsigned short d_reclen; //length of this d_name 文件名长
unsigned char d_type; //the type of d_name 文件类型
char d_name [NAME_MAX+1]; //文件名,最长255字符,NAME_MAX 在limits.h中定义
}
DIR
#include <dirent.h>
struct __dirstream
{void *__fd; //struct hurd_fd pointer for descriptor
char *__data; //Directory block
int __entry_data; //Entry number `__data' corresponds to
char *__ptr; //Current pointer into the block
int __entry_ptr; //Entry number `__ptr' corresponds to
size_t __allocation; //Space allocated for the block
size_t __size; //Total valid data in the block
__libc_lock_define (, __lock) //Mutex lock for this structure
};
typedef struct __dirstream DIR; //定义路径
相关函数
- DIR *opendir(const char *dirname);
打开在dirname的directory stream。成功,返回在dirname的DIR stream;否则,返回NULL。
- int closedir(DIR *dir);
关闭赋给dir的路径, 在此之后directory stream dir就不可用了 。成功,返回0;否则,返回 -1。
- struct dirent *readdir(DIR *dir);
读取DIR下的一个目录实体。成功,返回struct dirent的实体;否则,返回NULL。当读到最后一个文件,返回NULL。
- void rewinddir(DIR *);
倒回到directory的开始位置。
- void seekdir(DIR *, long);
寻找DIR的位置。
- long telldir(DIR *);
返回当前DIR的位置。
示例程序
#include <dirent.h>
int getDirList(char *path) //path为目录路径
{
DIR *dp;
struct dirent *dirp;
if((dp = opendir(path)) == NULL)
printf("can't open %s", path);
while((dirp = readdir(dp)) != NULL)
printf("%s\n", dirp->d_name);
closedir(dp);
return 0;
}