使用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()函数历遍指定目录的所有文件

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

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

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

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

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

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

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

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

首先介绍FindFirstFile 和 FindNextFile这两个函数,在介绍他们之前,先来了解一个WIN32_FIND_DATA结构 WIN32_FIND_DATA结构描述了由FindFirst...
  • shzhsh
  • shzhsh
  • 2011-07-05 20:25
  • 6061

查找指定目录的第一个文件或目录并返回它的句柄——FindFirstFile

FindFirstFile (2008-11-03 13:38:54) 转载▼ 标签: it   函数功能描述:查找指定目录的第一个文件或目录并返回...

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

C++使用Windows通配符查找相应文件。

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

实现了在wince 下,遍历目录查找文件

Windows API一日一练 FindFirstFile和FindNextFile函数

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

FindFirstFile和FindNextFile函数

在开发软件的过程里,经常需要维护目录里的数据。比如在开发银行的信用卡系统里,由于每天创建的LOG非常多,那么一个很大的硬盘,在6个月后,就占用了很多空间。这时就有这样的一个需求,把所有超过6个月的LO...
  • softn
  • softn
  • 2012-05-06 15:34
  • 220
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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