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

原创 2004年02月20日 11:40:00

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

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

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

void FindFileInDir(char* rootDir, char* strRet)

{

    char fname[MAC_FILENAMELENOPATH];

    ZeroMemory(fname, MAC_FILENAMELENOPATH);

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

    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查找文件或遍历文件夹

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

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
  • 5185

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

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

FindFile FindNextFile 如何遍历一个文件夹并获取里面文件的信息

地址: FindFile FindNextFile 如何遍历一个文件夹并获取里面文 
  • mynote
  • mynote
  • 2014年06月03日 12:15
  • 6190

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

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

FindFirstFile()函数

FindFirstFile()函数 函数功能描述:查找指定目录的第一个文件或目录并返回它的句柄 函数原型 :           HANDLE FindFirstFile(  ...
  • veryhehe2011
  • veryhehe2011
  • 2012年07月21日 10:51
  • 13618

FindFirstFile、FindNext递归遍历硬盘的文件

原文地址:http://hi.baidu.com/littlestupid/item/f87dbeb25d37b394194697df #include #include using namesp...
  • xexiyong
  • xexiyong
  • 2014年01月11日 21:55
  • 3307

Windows API一日一练(58)FindFirstFile和FindNextFile函数

在开发软件的过程里,经常需要维护目录里的数据。比如在开发银行的信用卡系统里,由于每天创建的LOG非常多,那么一个很大的硬盘,在6个月后,就占用了很多空间。这时就有这样的一个需求,把所有超过6个月的LO...
  • caimouse
  • caimouse
  • 2007年10月25日 21:56
  • 41258

C++使用通配符查找文件(FindFirstFile)

C++使用Windows通配符查找相应文件。
  • faithzzf
  • faithzzf
  • 2017年01月09日 16:27
  • 2244

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

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

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