文件搜索算法(递归算法)

该博客介绍了一个使用C++实现的递归算法,用于在指定目录下搜索文件和子目录。通过`CFileFind`类,遍历目录并根据`IsDirectory()`判断是否为文件或目录。如果是目录,它会递归调用自身添加子目录到树形视图。如果是文件,直接添加到树形视图。这个过程展示了如何高效地遍历和构建文件系统的树结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 此算法可以创建树型列表。
  1. void CFileTreeDlg::AddFile(CString StrPath, HTREEITEM faItem )
  2.     //StrPath为传递过来的目录层次,本次函数调用中搜索的文件都是它的下一层的。
  3.     //faItem为传递过来的Tree节点,本次函数调用中添加的Tree节点都是它的子节点。
  4. {
  5.  CFileFind OneFile;
  6.  CString FName, DirName;
  7.  BOOL BeWorking; 
  8.  HTREEITEM NewItem; 
  9.  DirName = StrPath+"//*.*";
  10.  BeWorking = OneFile.FindFile( DirName );
  11.  while ( BeWorking ) {    //BeWorking非零,指找了文件或目录
  12.   //查找同级的目录
  13.   BeWorking = OneFile.FindNextFile();
  14.   if ( OneFile.IsDirectory() && !OneFile.IsDots() )      //如果查找的结果是目录又不是".."或"."
  15.   { 
  16.    //向Tree1中添加目录;
  17.    DirName = OneFile.GetFilePath();
  18.    FName = OneFile.GetFileTitle(); 
  19.    //IDC_TREE1
  20.    NewItem = m_Tree.InsertItem( FName, faItem );    //NewItem取得节点,其目的是为了下一层中
  21.             //添加节点方便,递归时把它传过去。
  22.    //进入下一层递归调用。
  23.    AddFile(DirName, NewItem);
  24.   }
  25.   //退出递归时,到了这里!!!
  26.   if ( !OneFile.IsDirectory() && !OneFile.IsDots() )     //如果查找结果是文件
  27.   {
  28.    //向Tree1中添加文件
  29.    FName = OneFile.GetFileTitle();    //注意这里用的是GetFileTitle,因为
  30.             //这里是添加文件。
  31.    m_Tree.InsertItem( FName, faItem );
  32.   }
  33.   
  34.   //BeWorking = OneFile.FindNextFile();
  35.  }// end of while
  36.  OneFile.Close();        //记着用完CFileFild实例要关闭
  37. }
  38. GIS导航网
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值