遍历目录算法

 

算法实现的基本功能:

遍历某一目录A,将改目录A下的子目录及文件按层次关系插入到树控件中(树控件以A为根节点)

算法思想:

 

1初始化: 目录A的路径,遍历深度Depth, 树控件目录A的句柄H

           Vector<文件夹> 文件夹容器;

           Vector<文件>   文件容器;

2 分类处理:

         将目录A下的文件夹放入文件夹容器中;

         将目录A下的文件放入文件容器中;

3 处理文件夹容器

         For(遍历文件夹容器中的元素)

         若遍历深度>0{

           将文件夹加入树控件中;

           遍历深度减1,同时递归遍历改文件夹;

}否则{

  将改文件夹加入树控件中;//以便能在树控件的父目录前生成”+”号

  RETURN 退出程序;

}

4 处理文件容器

        FOR(遍历文件容器中的元素)

           将文件适当处理后,加入树控件中;

 

 

算法关键代码:

 

1         初始化:

M_treeCtr;  //树控件,为类成员变量

rootDir; // 目录A的路径

HTREEITEM   hroot; // 树控件中目录A的句柄

Int  depth; // 遍历深度

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

2  主程序

   Void FindFileInDir(char * rootDir,  HTREEITEM hroot,  intdepth)

{

     struct Node{   // 存放文件信息

                   char fname[256];

             char filePathName[256];

         };

std::vector directory,  imageFile; // 目录容器、图像文件容器

         WIN32_FIND_DATA   fd;  

HANDLE  hSearch; 

 

hSearch = FindFirstFile(rootDir, &fd); //使用此函数寻找目录下的文件

分类处理;

   For(遍历文件夹容器中的元素 i){

   IF(Depth>0){

sub=m_treeCtrl.InsertItem(directory.at(i).fname,hroot,TVI_LAST); 

FindFileInDir(directory.at(i).filePathName,sub,depth-1);

}

ELSE{

将改文件夹加入树控件中;//以便能在树控件的父目录前生成”+”号

RETURN ;

}

FOR(遍历文件容器中的元素)

           将文件适当处理后,加入树控件中;    

}

 

你可能感兴趣的:(MFC)