linux c 编程实战: 文件操作总结(四)

来源:互联网 发布:开源微信cms 编辑:程序博客网 时间:2024/06/05 08:05

目录操作

1.目录的创建和删除

  • mkdir函数可以进行目录的创建
#include<sys/types.h>#include<sys/stat.h>int mkdir(const char * pathname, int mode)//新创建的目录所有者的uid和创建这个目录进程的uid是一样的,也就是说,如果父目录设置了st_gid位,则新创建的目录也具有st_gid位(设置该位后任何在此目录下创建的文件的组id和该目录的组id是一样的)//函数调用成功返回0,失败返回-1 
  • rmdir函数可以进行目录的删除
#include<unistd.h>int rmdir(const char * pathname)//只能删除空目录//函数调用成功返回0,失败返回-1

2.获取当前目录

  • getcwd函数可以获取进程当前的工作目录
#include<unistd.h>char * getcwd(char * buf, int size)//getcwd会将当前工作目录的绝对路径复制到buf所指的地址空间之中//size为给buf分配的地址空间,若绝对路径的字符串长度超过size的大小,则函数返回NULL,如果size为0,则getcwd会根据绝对路径的长度自动分配大小给buf所指的内存空间,,如果参数buf是NULL,则函数会根据size的大小自动分配内存给buf所指的内存空间//函数执行成功返回将结果复制到参数buf所指的内存空间之中,失败返回NULL

3.设置工作目录

  • chdir函数可以更改当前的工作目录
#include<unistd.h>int chdir(const char * pathname)int chdir(int fd)//函数只能改变进程当前的工作目录,它的作用和cd命令是不一样的,cd是切换目录,更改工作目录的意思是进程如果要创建一个文件,默认是创建到当前目录下的,但是更改了工作目录后,就会创建到你更改得那个目录之下//函数调用成功返回0,失败返回-1

4.获取目录信息

  • opendir函数用来打开一个目录
#include<sys.types.h>#include<dirent.h>DIR * opendir(const char * pathname)//这个函数会打开参数pathname的指定目录,并如同open函数返回文件描述一样返回一个文件目录流,是DIR形态的,失败返回NULL
  • readdir函数用来读取一个目录下的目录项信息
#include<sys/types.h>#include<dirent.h>struct dirent * readdir(DIR * dir)//struct dirent结构体中包含了四个成员,其中我感觉有用的就是d_name这个变量,它可以获取目录下文件的文件名,其他成员都有什么请大家自行百度,进行了解,只要大家知道常用的就行了//函数调用成功返回一个指向结构体的指针,失败返回-1
  • closedir函数用来关闭dir指向的目录,执行成功返回0,当有错误时返回-1
#include<sys/types.h>#include<dirent.h>int closedir(DIR * dir)

对于上面三个函数的应用,附源码:

#include<stdio.h>#include<stdlib.h>#include<sys/types.h>#include<dirent.h>#include<unistd.h>int my_readir(const char *path){    DIR *dir;    struct dirent *ptr;    if((dir=opendir(path))==NULL)    {        perror("opendir");        return -1;    }    while((ptr=readdir(dir))!=NULL)    {        printf("filename:%s\n",ptr->d_name);    }    closedir(dir);    return 0;}int main(int argc,char **argv){    if(argc<2)    {        printf("listfile <target path>\n");        exit(1);    }    if(my_readir(argv[1])==-1)    {        exit(1);    }    return 0;}
1 0