一.目录的操作:创建与删除, 获取当前目录, 设置工作目录, 获取目录信息,
1.创建: int mkdir(const char * path, mode_t mode) //在头文件<sys/stat.h><sys/types.h>
两个参数第一个参数是你要创建的目录名,第二个参数应和父目录的权限一致。
2.删除: int rmdir(const char * pathname) //只能删除由pathname指定的目录//<unistd.h>
3.获取当前目录: char *getcwd(char * buf, size_t size)//<unistd.h>
含义: getcwd会将当前的工作目录的绝对路径复制到参数buf所指定的内存空间,参数size为
buf所占的空间大小, 如果参数size为0则系统会根据当前目录实际所占的内存分配存储空间。
4.设置当前的工作目录: int chdir(const char * path) | int fchdir(int fd)//<unistd.h>
含义: 将当前的工作目录设置成由path或者文件描述符fd指定的工作目录,
作用:可以用这个函数来完成一个 cd 的命令
例子:用简单的几行代码实现:
# include <unistd.h>
# include <stdio.h>
int main(int argc, char **argv)
{
char buf[PATH_MAX +1];
if(argc < 2)
{
exit(-1);
}
if( chdir(argv[1]) < 0 )
exit(-1);
if( getcwd(buf, 512) <0 )
exit(-1);
printf("%s\n", buf);
return 0;
}
5.获取目录信息:这个目录必须具有读权限 opendir-->readdir-->clisedir
1: DIR * opendir(const char * name)//<sys/types.h><dirent>
先打开由参数name指定的目录,然后返回一个DIR *目录流类似与文件描述符,接下来的操作都要用到这个东西。
2:struct dirent *readdir(DIR * dir)//<.....>
从参数dir所指向的目录中读取目录项的信息,返回一个struct dirent结构的指针
struct dirent
{
long d_ino;
off_t d_off;//这个挺重要 可以查看从目录进入点到当前目录文件的偏移量
unsigned short d_reclen;//指的是文件名的长度
char d_name[NAME_MAX+1];//当前的目录文件
}
*******调用一次该函数返回一个文件名直到该目录下已经没有文件可以读取
例子:用简单的几行代码来使用:
char path[512];//指一个目录名
DIR * dir;//目录流
struct dirent * ptr;//目录的信息
dir = opendir(path);
while( (ptr = readdir(dir) ) != NULL)
{
printf("%s\n", ptr->d_name);
}
closedir(dir);