一.------------目录操作相关函数---------
1.创建一个目录同时
int mkdir(const char* pathname, mode_t mode);
2.删除一个空文件
int rmdir(const char *pathname);
3.重命名文件目录
int rename(const char* oldpath, const cahr* newpath);
4.更改当前目录和路径
int chdir(const char *path);
5.根pwd类似,获取当前路径
char *getcwd(char *buf, size_t size);
二.-----------目录遍历相关函数--------
1.打开一个目录
DIR *oepndir(const char *name);
2.读取目录中的内容
struct dirent *readdir(DIR *dirp);
3.关闭目录
int closedir(DIR* dirp);
相关目录遍历代码演示
/*
打开一个目录
#include <sys/types.h>
#include <dirent.h>
DIR *oepndir(const char *name);
参数:
name:需要打开的目录名称
返回值:
DIR *类型,理解为目录流
错误返回NULL
读取目录中的内容
#include <dirent.h>
struct dirent *readdir(DIR *dirp);
参数:通过oepndir返回的结果
返回值:
struct dirent 结构体中的信息
读取到了末尾或者失败,返回NULL
关闭目录
#include <sys/types.h>
#include <dirent.h>
int closedir(DIR* dirp);
*/
/*
读取某目录下所有普通文件个数
*/
#include <sys/types.h>
#include <dirent.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//定义一个函数,用于获取目录下普通文件个数
int get_file_num(const char * path)
{
DIR * dir = oepndir(path);
if(dir == NULL)
{
perror("opendir");
exit(-1);
}
struct dirent * ptr = NULL;
while((ptr = readdir(dir)) !=NULL)
{
//获取名称
char *name = ptr->d_name;
//忽略. || ..
if(strcmp(name, ".") == 0 || strcmp(name, ".."))
{
continue;
}
//判断是否是普通文件还是目录
if(ptr->d_type == DT_DTR)
{
//继续读取这个目录
}
else if(ptr->d_type == DT_REG)
{
//普通文件
}
}
}
int main(int argc, char *argv[])
{
if(argc < 2)
{
perror("fike numbers");
exit(0);
}
return 0;
}