使用FindFirstFile和FindNextFile查找某个目录下的所有文件

原创 2006年05月25日 14:14:00

使用FindFirstFile和FindNextFile查找某个目录下的所有文件(包括子目录)

  来源:网络收集  整理日期:08月25日 19:38  学新网:studynew.com

一、在不使用mfc的程序中获得某个目录下的所有文件名称,包括子目录。把文件名称以一个固定的程度放入一个缓冲中,这个缓冲要足够的大,能容下所有的文件名称。

函数的输入为要查找的根目录,输出为存放所有文件名称的缓冲

算法:使用递归
二、代码:

void FindFileInDir(char* rootDir, char* strRet)

{

    char fname[MAC_FILENAMELENOPATH];

    ZeroMemory(fname, MAC_FILENAMELENOPATH);

 

    WIN32_FIND_DATA fd;

    ZeroMemory(&fd, sizeof(WIN32_FIND_DATA));

 

    HANDLE hSearch;

    char filePathName[256];

    char tmpPath[256];

    ZeroMemory(filePathName, 256);

    ZeroMemory(tmpPath, 256);

 

    strcpy(filePathName, rootDir);

 

    BOOL bSearchFinished = FALSE;

 

    if( filePathName[strlen(filePathName) -1] != // )

    {

       strcat(filePathName, //);

    }

 

    strcat(filePathName, *);

 

    hSearch = FindFirstFile(filePathName, &fd);

 

    //Is directory

    if( (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)

       && strcmp(fd.cFileName, .) && strcmp(fd.cFileName, ..) )      

    {

       strcpy(tmpPath, rootDir);

       strcat(tmpPath, fd.cFileName);

       FindFileInDir(tmpPath, strRet);

    }

   

    else   if( strcmp(fd.cFileName, .) && strcmp(fd.cFileName, ..) )

              {

                  sprintf(fname, %-50.50s, fd.cFileName);

                  strcat(strRet + strRet[strlen(strRet)] , fname);

              }

 

    while( !bSearchFinished )

    {

       if( FindNextFile(hSearch, &fd) )

       {

           if( (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)

              && strcmp(fd.cFileName, .) && strcmp(fd.cFileName, ..) )      

           {

              strcpy(tmpPath, rootDir);

              strcat(tmpPath, fd.cFileName);

              FindFileInDir(tmpPath, strRet);

           }

   

           else   if( strcmp(fd.cFileName, .) && strcmp(fd.cFileName, ..) )

                     {

                         sprintf(fname, %-50.50s, fd.cFileName);

                         strcat(strRet + strRet[strlen(strRet)] , fname);

                     }

       }

       else

       {

           if( GetLastError() == ERROR_NO_MORE_FILES )          //Normal Finished

           {

              bSearchFinished = TRUE;

           }

           else

              bSearchFinished = TRUE;     //Terminate Search

       }

    }

 

    FindClose(hSearch);

   

}

使用FindFirstFile和FindNextFile查找某个目录下的所有文件(包括子目录)

一、在不使用mfc的程序中获得某个目录下的所有文件名称,包括子目录。把文件名称以一个固定的程度放入一个缓冲中,这个缓冲要足够的大,能容下所有的文件名称。函数的输入为要查找的根目录,输出为存放所有文件名...
  • myemailcn
  • myemailcn
  • 2004年02月20日 11:40
  • 11044

FindFirstFile FindNextFile FindClose使用

TCHAR szFind[MAX_PATH] = _T("\\CF Card"); TCHAR cFileName[MAX_PATH] = { 0 }; WIN32_FIND_DATA stFindF...
  • luliyuan
  • luliyuan
  • 2014年11月12日 15:56
  • 1853

FindFirstFile和FindNextFile的用法

转自:http://blog.csdn.net/jys87/archive/2009/08/02/4401201.aspx1.FindFirstFile函数的用法。。。。在SDK帮助文档中原形如下:H...
  • ayw_hehe
  • ayw_hehe
  • 2011年05月31日 14:09
  • 5189

使用FindFirstFile和FindNextFile查找某个目录下的所有文件

使用FindFirstFile和FindNextFile查找某个目录下的所有文件(包括子目录) ...
  • zhaoyawei
  • zhaoyawei
  • 2006年05月25日 14:14
  • 3346

遍历目录 常用FindFirstFile()和FindNextFile()

FindFirstFile   函数功能描述:查找指定目录的第一个文件或目录并返回它的句柄 函数原型 :           HANDLE FindFirstFile(          ...
  • lgh1992314
  • lgh1992314
  • 2012年11月23日 21:54
  • 1435

利用FindFirstFile和FindNextFile查找文件或遍历文件夹

FindFirstFile()根据文件名查找文件,函数执行成功返回一个搜索句柄,出错则返回INVALID_HANDLE_VALUE常数,查找结束应该用FindClose函数关闭搜索句柄。函数原型: ...
  • milanleon
  • milanleon
  • 2014年01月13日 15:37
  • 5009

用 _findfirst 和 _findnext 查找文件

一、这两个函数均在io.h里面。 二、首先了解一下一个文件结构体: struct _finddata_t {     unsigned    attrib;     time_t      time...
  • huilingwu
  • huilingwu
  • 2016年05月11日 20:24
  • 506

利用FindFirstFile(),FindNextFile()函数历遍指定目录的所有文件

本文利用FindFirstFile(),FindNextFile()函数历遍指定目录的所有文件,最基础的历遍所有文件。一下代码尚无法解决文件名为中文时的乱码问题,以及无法分别无后缀的文件名和文件夹名的...
  • SMF0504
  • SMF0504
  • 2016年07月29日 07:53
  • 954

利用FindFirstFile(),FindNextFile()函数历遍指定目录的所有文件

本文利用FindFirstFile(),FindNextFile()函数历遍指定目录的所有文件,最基础的历遍所有文件。一下代码尚无法解决文件名为中文时的乱码问题,以及无法分别无后缀的文件名和文件夹名的...
  • u012005313
  • u012005313
  • 2015年06月14日 12:22
  • 2792

Windows下使用FindFirstFile和FindNextFile列举目录中的文件

在Windows下编程经常需要列举出某个目录下的所有文件,以便对该目录下的文件进行批量处理,这种情形下,我们可以使用windows api提供的FindFirstFile和FindNextFile。 ...
  • Cashey1991
  • Cashey1991
  • 2013年03月01日 20:51
  • 6949
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用FindFirstFile和FindNextFile查找某个目录下的所有文件
举报原因:
原因补充:

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