使用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);

   

}

c#调用api(FindFirstFile,FindNextFile)高效遍历目录文件

在c#下遍历目录,应用最多的应该就是 System.IO.DirectoryInfo.GetDirectories或GetFiles了,但是当目录特别大,文件特别多时,效率不尽人意,此时我们很容易想到...

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

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

FindFirstFile FindNextFile FindFiles 文件查找非常简单的代码

地址: FindFirstFile FindNextFile FindFiles 文件查找非常简单 FindFirstFile,FindNextFile,FindFiles,文件查找非常简单的代码,...
  • mynote
  • mynote
  • 2014年06月02日 15:54
  • 1057

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

FindFirstFile()根据文件名查找文件,函数执行成功返回一个搜索句柄,出错则返回INVALID_HANDLE_VALUE常数,查找结束应该用FindClose函数关闭搜索句柄。函数原型: ...

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

FindFirstFile   函数功能描述:查找指定目录的第一个文件或目录并返回它的句柄 函数原型 :           HANDLE FindFirstFile(          ...

C/C++:遍历子目录,枚举文件,FindFirstFile + FindNextFile

转自:http://blog.csdn.net/liigo/article/details/4548577 平时写程序时经常会用到的遍历子目录枚举文件的功能,用 Windows API 函数 Fin...

使用FindFirstFile,FindNextFile遍历一个文件夹

FindNextFile是一个函数,可以用来遍历目录或文件时,判断当前目录下是否有下一个目录或文件。 VB声明 编辑 Public Declare Function FindNextFile ...
  • SMF0504
  • SMF0504
  • 2016年05月19日 10:50
  • 1173

使用FindFirstFile,FindNextFile遍历一个文件夹

//遍历文件夹函数 void TraverseFolder(LPCTSTR lpPath) {     TCHAR szFind[MAX_PATH] = {_T("\0")};     WIN32_F...
  • hermito
  • hermito
  • 2014年11月06日 14:27
  • 339

使用FindFirstFile,FindNextFile遍历一个文件夹

源自: http://www.cnblogs.com/chenkunyun/archive/2012/03/24/2415727.html 代码: //遍历文件夹函数 void Traverse...

windows系统下使用FindFirstFile 和 FindNextFileA遍历某目录下的所有文件(c++编写)

首先介绍FindFirstFile 和 FindNextFile这两个函数,在介绍他们之前,先来了解一个WIN32_FIND_DATA结构 WIN32_FIND_DATA结构描述了由FindFirst...
  • shzhsh
  • shzhsh
  • 2011年07月05日 20:25
  • 6145
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用FindFirstFile和FindNextFile查找某个目录下的所有文件
举报原因:
原因补充:

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