linux c 关于文件目录操作的总结

来源:互联网 发布:windows netsh wlan 编辑:程序博客网 时间:2024/06/16 12:46

这篇文章主要是关于文件目录的相关操作,在linux平台下也是经常用到的一个操作,所以这篇文章应该先于上一篇关于文件的操作,一般我们创建文件夹后,才会进行关于文件的一些操作。提示一点创建目录时候,这能一级一级的创建不能创建多级,如若创建多级,则需要循环创建。


这里先介绍一下关于当前工作路径的问题,一般我们都是在某一个目录下进行文件或者文件夹的操作,但是一旦我们对文件进行夸目录操作后,可能不是很清楚我们的当前的工作路径到底是在哪里了,所以这里写了一个关于打印当前工作目录的函数。

void getpwd(){char buffer[1024] ;//获取当前的工作目录,注意:长度必须大于工作目录的长度加一char *p = getcwd(buffer , 40);char *dir = NULL;printf("pwd**buffer:%s   p:%s size:%d  \n" , buffer , p , strlen(buffer));//获取当前工作目录的名字dir = (char *)get_current_dir_name();printf("pwd**dir:%s \n" , dir);}
在跨目录进行文件操作时候,可以打印当前工作路径,才能有效的进行后续操作,本人当时就是不清楚当前工作路径,所以在传入相对路径时候,总是出错。


接下来就是创建目录了,调用系统API进行目录的创建:

1). int mkdir(const char* name, int mode)

该函数用来创建目录文件夹。参数name:文件夹目录名称, mode:权限,因为linux系统对权限要求比较严格,所以我们一般会有权限参数。这里需要对目录进行检查,如果存在就不用创建,不存在则创建,这里可以用access函数进行检查。

 mode参数为0时表示检查文件的存在性,如果文件存在,返回0,不存在,返回-1。 
这个函数还可以检查其它文件属性: 
06     检查读写权限 
04     检查读权限 
02     检查写权限 
01     检查执行权限 
00     检查文件的存在性
而这个就算这个文件没有读权限,也可以判断这个文件存在于否。存在返回0,不存在返回-1。下面的是创建代码

if(access(pathName, F_OK ) != 0){if(mkdir(pathName, 0755) == -1){printf("error cp mkdir=%s:msg=%s\n", pathName, strerror(errno));}}

2) rmdir(const char* name)

该函数是删除目录,成功返回0,否则返回-1。删除文件一般用remove(name)。

3)chdir(const char* dir)

该函数在文件目录操作中经常使用,用来切换目录,比如要进入某个文件目录时候或者退出时候都需要调用。

4)DIR*  opendir(const char* path)

该函数主要用来打开指定的目录,如果存在返回DIR的指针,否则返回null。

5)struct dirent* readdir(DIR*)

该函数用来遍历文件夹下面的所有文件(文件夹或者文件),包括系统自动创建的隐藏目录“.”和“..”,成功返回结构体指针,失败返回null。

6) lstat(const char* path, struct stat* buf)

该函数主要是获取指定目录下的文件或者文件夹的信息,例如:名称,大小,时间等等


if((pDir = opendir(FOLDER_PATH)) == NULL){return 1;}//change dirchdir(FOLDER_PATH);while((entry = readdir(pDir)) != NULL){lstat(entry->d_name, &statBuff);}





0 0
原创粉丝点击