vc如何用CFileFind类编写一个全盘搜索程序?求解。。。

 我来答
Ruby_1234
2012-03-01 · 超过13用户采纳过TA的回答
知道答主
回答量:30
采纳率:0%
帮助的人:34.5万
展开全部
1.使用网上最普通的方法
find(char * lpPath)
{
  char szFind[MAX_PATH];
  WIN32_FIND_DATA FindFileData;
  strcpy(szFind,lpPath);
  strcat(szFind,"*.*");
  HANDLE hFind=::FindFirstFile(szFind,&FindFileData);
  if(INVALID_HANDLE_VALUE == hFind)  return;
  while(TRUE)
  {
    if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
    {
      if(FindFileData.cFileName[0]!='.')
      {
        strcpy(szFile,lpPath);
        strcat(szFile,"");
        strcat(szFile,FindFileData.cFileName);
        find(szFile);
      }
    }
    else
    {
      cout << FindFileData.cFileName;
    }
    if(!FindNextFile(hFind,&FindFileData))  break;
  }
  FindClose(hFind);
}

2.利用CFileFind类较简洁的实现该功能
void CModelDlg::FindBmpFile(CString strFoldername
{
CString m_cstrFileList="";
CFileFind tempFind;
BOOL bFound; //判断是否成功找到文件
bFound=tempFind.FindFile(strFoldername + "\\*.*"); /修改" "内内容给限定查找文件类型
CString strTmp; //如果找到的是文件夹 存放文件夹路径
while(bFound) //遍历所有文件
{
bFound=tempFind.FindNextFile(); //第一次执行FindNextFile是选择到第一个文件,以后执行为选择
if(!tempFind.IsDots()) continue; //如果找到的是返回上层的目录 则结束本次查找
if(tempFind.IsDirectory()) //找到的是文件夹,则遍历该文件夹下的文件
{
strTmp="";
strTmp=tempFind.GetFilePath();
FindFile(strTmp);
}
else
{
strTmp=tempFind.GetFileName(); //保存文件名,包括后缀名
// 在此处添加对找到文件的处理
}
}
tempFind.Close();
return;

}
追问
FindFile(strTmp);这条语句不对,应该是FindBmpFile(strTmp);    另外 “if(!tempFind.IsDots()) continue; //如果找到的是返回上层的目录 则结束本次查找”  中的IsDots()这函数怎么用啊?把这段代码打入MFC中还是不能实现搜索。。
匿名用户
2012-03-01
展开全部
jqdcz
345
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-03-01
展开全部
cpzpf
375
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-03-01
展开全部
qqwq
381
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
败家440
2012-03-01
知道答主
回答量:3
采纳率:0%
帮助的人:4899
展开全部
我闪
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式