博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
FindNextFile 蚊子132 给大家写一段通用的文件查找代码,非常简单明了
阅读量:3518 次
发布时间:2019-05-20

本文共 1705 字,大约阅读时间需要 5 分钟。

地址:

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

一段通用的文件查找代码

2 分钟前 上传
一段通用的文件查找代码

一、在不使用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. }
复制代码


转载地址:http://uaxqj.baihongyu.com/

你可能感兴趣的文章
[LeetCode javaScript] 53.最大子序和
查看>>
[LeetCode javaScript] 101. 对称二叉树
查看>>
[LeetCode javaScript] 860. 柠檬水找零
查看>>
[LeetCode javaScript] 118. 杨辉三角
查看>>
[LeetCode javaScript] 905. 按奇偶校验排序数组
查看>>
[LeetCode javaScript] 617. 合并二叉树
查看>>
[LeetCode javaScript] 292. Nim游戏
查看>>
[LeetCode javaScript] 896. 单调数列
查看>>
[LeetCode javaScript] 804. 唯一摩尔斯密码词
查看>>
[LeetCode javaScript] 476. 数字的补数
查看>>
[LeetCode javaScript] 811. 子域名访问计数
查看>>
[LeetCode javaScript] 414. 第三大的数
查看>>
[LeetCode javaScript] 242. 有效的字母异位词
查看>>
[LeetCode javaScript] 75. 颜色分类
查看>>
[LeetCode javaScript] 179. 最大数
查看>>
[LeetCode javaScript] 56. 合并区间
查看>>
[LeetCode javaScript] 190. 颠倒二进制位
查看>>
[LeetCode javaScript] 521. 最长特殊序列 Ⅰ
查看>>
[LeetCode javaScript] 806. 写字符串需要的行数
查看>>
[LeetCode javaScript] 868. 二进制间距
查看>>