(1)打开/关闭目录文件
#include <dirent.h>
DIR* opendir(const char* dirname);
int closedir(DIR* dirp);
opendir()函数用于打开一个目录文件,其中dirname为目录路径,执行成功,返回一个目录流指针,失败返回NULL
closedir()函数用于关闭指定的目录流,成功返回0,失败返回-1
(2)读取目录内容
#include <dirent.h>
struct dirent* readdir(DIR* dirp);
int readdir_r(DIR* dirp,struct dirent* entry,struct dirent ** result);
其中struct dirent定义如下:
// from dirent.h
struct dirent
{
long ino; //目录中某文件的innode值
_kerbel_off_t d_off; // 从目录开始到当前目录条的距离
unsigned short d_reclen; // 目录中某文件名的长度
char d_name[256]; // 目录中某文件名
}
readdir()函数执行成功则返回一个指向struct dirent的结构体,,如果到达目录结尾,或失败,则范湖NULL。
readdir_r()函数在多线程编程中相对安全,且此函数第一个参数为打开的目录指针,它将初始化第二个参数引用的struct dirent结构,以表示第一个参数所引用的目录流的当前位置,并将所在位置的信息存储在第三个参数中。函数执行成功,将返回目录流中的一个文件信息,到达目录尾在返回0,执行失败返回-1。
(3)定位目录位置
long int telldir(DIR* dirp); //返回目录流的当前位置
void seekdir(DIR* dirp,long int loc); // 设置下一个readdir()位置
void rewinddir(DIR* dirp); //将目录流的位置重置到目录的开头
(4)当前工作路径操作
char* getcwd(char* buf,size_t size); //获取当前工作路径的绝对路径到buf中,并返回buf
int chdir(const char* path);//修改当前进程的环境变量的当前工作路径,成功返回0,失败返回-1