您的位置:首页 > 编程语言 > C语言/C++

[C/C++] WIN_遍历文件夹下所有文件和文件夹VC

2011-08-22 10:07 459 查看
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 CTestBarcodeDlg::FindBmpFile(CString strFoldername)//<?XML:NAMESPACE PREFIX = O />

{

CString m_cstrFileList="";

CFileFind tempFind;

BOOL bFound; //判断是否成功找到文件

bFound=tempFind.FindFile(strFoldername + "\\*.*"); //所有文件及文件夹

CString strTmp; //如果找到的是文件夹 存放文件夹路径

while(bFound) //遍历所有文件

{

bFound=tempFind.FindNextFile(); //第一次执行FindNextFile是选择到第一个文件,以后执行为选择到下一个文件

if(!tempFind.IsDots())

{

if(tempFind.IsDirectory())

{

strTmp="";

strTmp=tempFind.GetFilePath();

FindBmpFile(strTmp);

}

else

{

strTmp=tempFind.GetFileName();

strTmp.MakeUpper();

if( strTmp.Right(4)==".BMP" )//查找指定的bmp文件

{

m_cstrFileList = tempFind.GetFilePath();

// 在此处添加对找到文件的处理

}

}

}

}

tempFind.Close();

return;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: