搜索
简帛阁>技术文章>c/c++递归打印文件夹

c/c++递归打印文件夹

调用linux的系统函数,实现tree的功能,递归打印文件夹
使用到得函数:

DIR *opendir(const char *name);       // 打开文件夹
struct dirent *readdir(DIR *dirp);    // 遍历文件夹
int closedir(DIR *dirp);              // 关闭文件夹

代码如下:

/**
 * 递归打印文件夹
 * @param filePath 要打印的文件路径
 * @param space 当前文件夹的层次
 */
void printFileTree(string filePath, int space) {
    string currPath = filePath;     // 保存当前路径
    DIR *dir = opendir(filePath.c_str());  // 打开当前文件夹
    if (dir == nullptr) return;                 // 如果文件夹为空,则退出
    dirent *dirTree;
    //  readdir函数读取完当前文件后,会自动跳到下一个文件,如果读取完毕,会返回nullptr
    while ((dirTree = readdir(dir))) {
        // 不打印. ..以及隐藏的文件
        if (dirTree->d_name[0] == '.' || strcmp(dirTree->d_name, "..") == 0) continue;  
        for (int i = 0; i < space; ++i) {           // 打印提示符
            if (i == space - 1) cout << "|---";
            else cout << "|   ";
        }
        cout << dirTree->d_name << endl;        //  打印当前文件名
        if (dirTree->d_type == DT_DIR) {
            printFileTree(currPath + '/' + dirTree->d_name, space + 1); // 如果是文件夹,则继续递归
        }

    }
    closedir(dir);  // 关闭当前文件夹
}

结果展示

调用linux的系统函数,实现tree的功能,递归打印文件夹使用到得函数:DIR*opendir(constchar*name);//打开文件夹structdirent*readdir(DIR*di
最近周末在参加嵌入式培训,才学到C语言函数部分,,用VS2018软件写的。收集整理如下/*3打印出杨辉三角形(要求打印出10行如下图)111121133114641………………*/pragmawar
杨辉三角又名Pascal三角。其结构存储在一个二维数组里可以当成一个下三角矩阵。其核心是每行的行首元素和对角线元素(行列坐标相等)的情况下存储数字1,其它情况下为其腰上的两个元素之和。下面我们就从循环
文件夹,文件这是常见的,怎么创建?要不要先判断是否存在?非常非常基础的知识点usingSystem;usingSystemCollectionsGeneric;usingSystemLinq;usi
C递归递归指的是在函数的定义中使用函数自身的方法。举个例子:从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!
算法中递归的一个典型应用就是遍历目标文件夹,并把该文件夹下的所有文件和文件夹打印或显示出来,还可以递归计算出目标文件夹的总大小。本文即以实例形式展示了C递归实现显示目标文件夹的所有文件和文件夹,并计
C递归法便利某个目录下的所有子文件夹和文件usingSystem;usingSystemCollectionsGeneric;usingSystemIO;usingSystemLinq;usingSy
本博客主要内容为“小甲鱼”视频课程《带你学C带你飞》【第一季】学习笔记,在这里仅作学习交流。在文章中可能出现一些错误或者不准确的地方,如发现请积极指出,十分感谢。也欢迎大家一起讨论交流,如果你觉得这
includeincludeintmain(){inta,i,j,k;scanf(%d,&a);for(i1;i{for(j1;jprintf();for(k1;kprintf(*);printf(\
////mainc//递归函数////Createdbyxiaomageon15/6/7//Copyright(c)2015年xiaomageAllrightsreserved//include<