FindNextFile 蚊子132 给大家写一段通用的文件查找代码,非常简单明了

本文提供了一段在不使用MFC的程序中查找指定目录下所有文件的通用代码,包括子目录内的文件,并将文件名以固定格式存入缓冲区。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

地址: FindNextFile 蚊子132 给大家写一段通用的文件查找代码

文件查找在编程工作中,是非常常见的,这里 蚊子132 给大家写一段通用的文件查找代码,非常简单明了。

一段通用的文件查找代码

2 分钟前 上传
下载附件 (14.2 KB)
一段通用的文件查找代码




一、在不使用mfc的程序中获得某个目录下的所有文件名称,包括子目录。把文件名称以一个固定的程度放入一个缓冲中,这个缓冲要足够的大,能容下所有的文件名称。
函数的输入为要查找的根目录,输出为存放所有文件名称的缓冲
算法:使用递归
二、代码:

  1. void FindFileInDir(char* rootDir, char* strRet)
  2. {
  3.     char fname[MAC_FILENAMELENOPATH];
  4.     ZeroMemory(fname, MAC_FILENAMELENOPATH);

  5.     WIN32_FIND_DATA fd;
  6.     ZeroMemory(&fd, sizeof(WIN32_FIND_DATA));

  7.     HANDLE hSearch;
  8.     char filePathName[256];
  9.     char tmpPath[256];
  10.     ZeroMemory(filePathName, 256);
  11.     ZeroMemory(tmpPath, 256);

  12.     strcpy(filePathName, rootDir);

  13.     BOOL bSearchFinished = FALSE;

  14.     if( filePathName[strlen(filePathName) -1] != '""' )
  15.     {
  16.        strcat(filePathName, """");
  17.     }

  18.     strcat(filePathName, "*");

  19.     hSearch = FindFirstFile(filePathName, &fd);

  20.     //Is directory
  21.     if( (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
  22.        && strcmp(fd.cFileName, ".") && strcmp(fd.cFileName, "..") )      
  23.     {
  24.        strcpy(tmpPath, rootDir);
  25.        strcat(tmpPath, fd.cFileName);
  26.        FindFileInDir(tmpPath, strRet);
  27.     }
  28.    
  29.     else   if( strcmp(fd.cFileName, ".") && strcmp(fd.cFileName, "..") )
  30.               {
  31.                   sprintf(fname, "%-50.50s", fd.cFileName);
  32.                   strcat(strRet + strRet[strlen(strRet)] , fname);
  33.               }

  34.     while( !bSearchFinished )
  35.     {
  36.        if( FindNextFile(hSearch, &fd) )
  37.        {
  38.            if( (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
  39.               && strcmp(fd.cFileName, ".") && strcmp(fd.cFileName, "..") )      
  40.            {
  41.               strcpy(tmpPath, rootDir);
  42.               strcat(tmpPath, fd.cFileName);
  43.               FindFileInDir(tmpPath, strRet);
  44.            }
  45.    
  46.            else   if( strcmp(fd.cFileName, ".") && strcmp(fd.cFileName, "..") )
  47.                      {
  48.                          sprintf(fname, "%-50.50s", fd.cFileName);
  49.                          strcat(strRet + strRet[strlen(strRet)] , fname);
  50.                      }
  51.        }
  52.        else
  53.        {
  54.            if( GetLastError() == ERROR_NO_MORE_FILES )          //Normal Finished
  55.            {
  56.               bSearchFinished = TRUE;
  57.            }
  58.            else
  59.               bSearchFinished = TRUE;     //Terminate Search
  60.        }
  61.     }

  62.     FindClose(hSearch);
  63.    
  64. }
复制代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值