VC下遍历文件夹的两种方法

原创 2011年07月18日 22:25:09

想找个能遍历文件夹的办法,找了下,大概有两种,列举如下

第一种方法就是网上常见的一种方法:

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);
}

实际上还可以利用CFileFind类可以较简洁的实现该功能:

void 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; 
}

个人感觉第二个好用一点,方便于实现。

VC下遍历文件夹中的所有文件的几种方法

一、使用::FindFirstFile和::FindNextFile方法 find(char * lpPath) {   char szFind[MAX_PATH];   WIN32_FI...
  • wllmsdn
  • wllmsdn
  • 2014年05月27日 17:38
  • 4788

VC枚举(遍历)文件夹里面的文件

本文简单介绍下枚举文件夹中文件的操作。 首先,新建对话框应用程序 为了查看方便,我们在对话框上添加一个list列表,用于显示我们枚举到的文件 为了演示方便,我在工程中新建了一个文件夹MyF...
  • bingdianlanxin
  • bingdianlanxin
  • 2015年04月18日 18:06
  • 2067

VC下遍历文件夹的两种方法

想找个能遍历文件夹的办法,找了下,大概有两种,列举如下 第一种方法就是网上常见的一种方法: [cpp] view plain copy find(ch...
  • qq_23992597
  • qq_23992597
  • 2016年06月27日 17:29
  • 859

VC遍历文件夹下所有文件和文件夹

2010-03-25 16:59一、先介绍一个结构WIN32_FIND_DATAtypedef struct _WIN32_FIND_DATA{   DWORD dwFileAttributes; /...
  • snjdju
  • snjdju
  • 2010年04月15日 09:02
  • 17082

VC下遍历文件夹和文件

一、先介绍一个结构WIN32_FIND_DATA typedef struct _WIN32_FIND_DATA {   DWORD dwFileAttributes; //文件属性   FILETI...
  • wuan584974722
  • wuan584974722
  • 2016年08月13日 18:54
  • 976

遍历文件夹 vc

  • 2012年10月30日 21:59
  • 1.6MB
  • 下载

findfile用法

CFileFind::FindFilevirtual BOOL FindFile( LPCTSTR pstrName = NULL, DWORD dwUnused = 0 );参数pstrNa...
  • yy13210520
  • yy13210520
  • 2010年07月24日 17:32
  • 12601

MFC中利用FindFile函数在文件夹路径下连续读取多个文件

MFC利用文件夹路径连续读取多张图片利用FindFile函数进行查找和读取1、CFileFind类的声明文件保存在afx.h头文件中。2、该类的实现的功能:执行本地文件的查找(查找某个具体的文件,查找...
  • u010623565
  • u010623565
  • 2017年03月04日 21:18
  • 784

遍历一个目录下的所有文件(VC++6.0源代码)

  • 2011年09月16日 14:44
  • 1.12MB
  • 下载

VC++文件操作之最全篇(总结一下希望对大家有用)

一、剖析VC中的文件操作       各种关于文件的操作在程序设计中是十分常见,如果能对其各种操作都了如指掌,就可以根据实际情况找到最佳的解决方案,从而在较短的时间内编写出高效的代码,因而熟练的...
  • u010258235
  • u010258235
  • 2014年04月25日 15:52
  • 993
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:VC下遍历文件夹的两种方法
举报原因:
原因补充:

(最多只允许输入30个字)