Linux系统编程----目录操作和遍历相关函数

一.------------目录操作相关函数---------


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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值