linux c 关于文件目录操作的总结
2017-01-16 11:39
351 查看
这篇文章主要是关于文件目录的相关操作,在linux平台下也是经常用到的一个操作,所以这篇文章应该先于上一篇关于文件的操作,一般我们创建文件夹后,才会进行关于文件的一些操作。提示一点创建目录时候,这能一级一级的创建不能创建多级,如若创建多级,则需要循环创建。
这里先介绍一下关于当前工作路径的问题,一般我们都是在某一个目录下进行文件或者文件夹的操作,但是一旦我们对文件进行夸目录操作后,可能不是很清楚我们的当前的工作路径到底是在哪里了,所以这里写了一个关于打印当前工作目录的函数。
接下来就是创建目录了,调用系统API进行目录的创建:
1). int mkdir(const char* name, int mode)
该函数用来创建目录文件夹。参数name:文件夹目录名称, mode:权限,因为linux系统对权限要求比较严格,所以我们一般会有权限参数。这里需要对目录进行检查,如果存在就不用创建,不存在则创建,这里可以用access函数进行检查。
mode参数为0时表示检查文件的存在性,如果文件存在,返回0,不存在,返回-1。
这个函数还可以检查其它文件属性:
06 检查读写权限
04 检查读权限
02 检查写权限
01 检查执行权限
00 检查文件的存在性
而这个就算这个文件没有读权限,也可以判断这个文件存在于否。存在返回0,不存在返回-1。下面的是创建代码
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 dir
chdir(FOLDER_PATH);
while((entry = readdir(pDir)) != NULL)
{
lstat(entry->d_name, &statBuff);
}
这里先介绍一下关于当前工作路径的问题,一般我们都是在某一个目录下进行文件或者文件夹的操作,但是一旦我们对文件进行夸目录操作后,可能不是很清楚我们的当前的工作路径到底是在哪里了,所以这里写了一个关于打印当前工作目录的函数。
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 dir
chdir(FOLDER_PATH);
while((entry = readdir(pDir)) != NULL)
{
lstat(entry->d_name, &statBuff);
}
相关文章推荐
- linux c 关于文件操作的编程总结
- 黑马程序员__关于学习File类对文件目录操作的总结
- 关于C#资源文件操作的总结
- 关于PHP操作文件的一些FAQ总结
- linux c关于目录是否存在,新建目录等操作
- 关于 文件操作 【JAVA_IO】的学习与总结。
- 关于PHP操作文件的一些FAQ总结
- 关于java下的明确编码方式的文件读写操作总结
- c++文件目录操作点滴总结(不断更新)
- Linux学习(一)---关于文件和目录的基本操作命令
- 【工作总结】一组关于key=value类似配置文件的读写操作函数
- 关于文件及目录操作
- 关于PHP操作文件的一些FAQ总结
- C#对Windows文件/文件夹/目录的一些操作总结
- 关于文件流的阅读笔记(文件操作相关总结) [[ 应用过 ]]
- 关于PHP操作文件的一些FAQ总结
- 关于C#资源文件操作的总结
- 关于C#资源文件操作的总结
- Python中关于文件和目录的操作[转]
- c++ Builder 关于文件和目录的操作