用非递归方式遍历目录及其子目录的文件

转载 2006年06月21日 13:56:00
typedef BOOL (*PROCESS_FILE_FUNCTION)(LPCTSTR filename);
上面的PROCESS_FILE_FUNCTION是一种函数指针,这个函数处理文件名为filename的文件,如果该函数返回
FALSE,则ProcessDirectory立刻退出,不再继续查找
void ProcessDirectory(LPCTSTR dirname,PROCESS_FILE_FUNCTION proc)
{
     CStringArray dirs;
     CString searchname;
     CFileFind find;
     dirs.Add(dirname);
     BOOL bRet;
     while(dirs.GetSize()>0)
     {
        
        searchname = dirs[0] +"//*.*";
        dirs.RemoveAt(0);
        bRet = find.FindFile (searchname,0);
        if(!bRet)continue;
        do{
            bRet = find.FindNextFile ();
            if(find.IsDots ())
            {//忽略.和..文件
                continue;
            }
            if(find.IsDirectory ())
            {
                dirs.Add (find.GetFilePath());
                continue;
            }else{
                if(!proc(find.GetFilePath ()))
                {
                    return;
                }
            }
        }while(bRet);
     }
}

相关文章推荐

C++非递归方式遍历目录

  • 2016年07月22日 09:25
  • 8KB
  • 下载

[Windowns C]递归遍历指定目录下的子目录和文件

/* 功能:演示了利用C语言递归遍历指定目录下的子目录和文件! 说明:经修改也可以搜索文件名符合特定格式的文件,如修改“\\*.*”为“\\*.log” */ #include #i...

[Linux C]递归遍历指定目录下的子目录和文件

/* 功能:演示了在Linux下利用C语言递归遍历指定目录下的子目录(不含隐藏目录)和文件 */ #include #include #include void List(ch...

冒泡排序 二分排序 while遍历、递归遍历目录与子目录文件

冒泡排序 //冒泡排序 echo ''; $arr = array(2,3,0,4,1,6,5); //因为排序需要每次将一个元素与数组的其他元素进行比较,所以需要两层循环来控制 //外层循...

算法导论第十章习题10.4-3非递归方式实现二叉树的中序遍历

非递归方式实现二叉树的中序遍历:迭代方式: //非递归中序遍历 void NonReInOrder(BintreeNode* node) { BintreeNode*p=node; s...

非递归方式遍历ftp文件夹

由于单位服务器较大,使用递归的时候遍历程序 导致堆栈溢出的异常,从而 借鉴网上的朋友们 编写的 非递归遍历的本地文件夹改写的遍历ftp文件夹。 /** * 非递归方式遍历文件夹 * @pa...

二叉树的前中后序遍历,递归和非递归方式

解决二叉树的很多问题的方案都是基于对二叉树的遍历。遍历二叉树的前序,中序,后序三大方法算是计算机科班学生必写代码了。其递归遍历是人人都能信手拈来,可是在手生时写出非递归遍历恐非易事。正因为并非易事,所...
  • Hk_john
  • Hk_john
  • 2017年04月10日 19:34
  • 158

用递归和非递归方式实现二叉树先序、中序和后序遍历

import java.util.Stack; //分别用递归和非递归方式实现二叉树先序、中序和后序遍历 public class TreeTravel{ //二叉树节点的定义 public ...

二叉树(3)----后序遍历,递归和非递归方式

1、二叉树定义 typedef struct BTreeNodeElement_t_ { void *data; } BTreeNodeElement_t; typedef struct B...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用非递归方式遍历目录及其子目录的文件
举报原因:
原因补充:

(最多只允许输入30个字)