CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

菜鸟系列:与CFileFind有关!

楼主zjcop(柳风)2002-03-01 15:40:11 在 VC/MFC / 基础类 提问

我用CFileFind()搜索文件,设CFileFind   finder;请问如何用finder.IsDots()和  
  finder.IsSystem()控制搜索深度,当这两个函数为真是,如何继续搜索?请给出实现细节,感激不尽!  
            菜鸟系列,请多指教!  
  问题点数:100、回复次数:2Top

1 楼strip(阿飞 - Mozilla●CSDN●痛)回复于 2002-03-01 15:48:42 得分 70

IsDots()和IsDirectory()吧?  
  msdn里面有个非常简单的sample:  
  void   Recurse(LPCTSTR   pstr)  
  {  
        CFileFind   finder;  
   
        //   build   a   string   with   wildcards  
        CString   strWildcard(pstr);  
        strWildcard   +=   _T("\\*.*");  
   
        //   start   working   for   files  
        BOOL   bWorking   =   finder.FindFile(strWildcard);  
   
        while   (bWorking)  
        {  
              bWorking   =   finder.FindNextFile();  
   
              //   skip   .   and   ..   files;   otherwise,   we'd  
              //   recur   infinitely!  
   
              if   (finder.IsDots())  
                    continue;   //   必须跳过"."和".."这两个文件,否则,程序永远都不能结束了  
   
              //   if   it's   a   directory,   recursively   search   it  
   
              if   (finder.IsDirectory())   //   如果不判断这个的话,而且也不调用下面的语句,那函数就不会递归搜索,也就是只搜索一层目录  
              {  
                    CString   str   =   finder.GetFilePath();  
                    cout   <<   (LPCTSTR)   str   <<   endl;  
                    Recurse(str);   //递归搜索该子目录下面的所有文件和目录  
              }  
        }  
   
        finder.Close();  
  }  
  Top

2 楼ccnuxjg()回复于 2002-03-01 15:49:05 得分 30

给你个例子:  
  BOOL   CCutfoldDlg::DelDirectory(CString   DirName)  
  {  
          CFileFind   tempFind;  
          char   tempFileFind[200];  
          sprintf(tempFileFind,"%s\\*.*",DirName);  
          BOOL   IsFinded=(BOOL)tempFind.FindFile(tempFileFind);  
          while(IsFinded)  
  {  
              IsFinded=(BOOL)tempFind.FindNextFile();  
              if(!tempFind.IsDots())  
              {  
                          char   foundFileName[200];  
                          strcpy(foundFileName,tempFind.GetFileName().GetBuffer(200));  
                          if(tempFind.IsDirectory())  
                          {  
                                      char   tempDir[200];  
                                      sprintf(tempDir,"%s\\%s",DirName,foundFileName);  
                                      DelDirectory(tempDir);  
                          }  
                          else  
                          {  
                                      char   tempFileName[200];  
                                      sprintf(tempFileName,"%s\\%s",DirName,foundFileName);  
                                      DeleteFile(tempFileName);  
                          }  
                  }  
      }  
      tempFind.Close();  
      if(!RemoveDirectory(DirName))  
      {  
              ::MessageBox(0,"删除目录失败!","警告信息",MB_OK);  
              return   FALSE;  
      }  
      return   TRUE;  
  }Top

相关问题

  • 菜鸟问题:与CFileFind类有关的!!
  • 菜鸟问题!有关J2EE!
  • 菜鸟上路。有关rmi????????
  • 有关文本框的菜鸟问题
  • 有关Photoshop菜鸟问题一
  • 有关Photoshop菜鸟问题二
  • 有关Photoshop菜鸟问题三
  • 有关ip的一个菜鸟问题!
  • 有关const的菜鸟问题
  • 我是菜鸟,请指教。有关Interbase……

关键词

  • cfilefind
  • finder
  • strwildcard
  • isdots
  • bworking
  • 搜索

得分解答快速导航

  • 帖主:zjcop
  • strip
  • ccnuxjg

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo