zoukankan      html  css  js  c++  java
  • 使用FindFirstFile和FindNextFile查找某个目录下的所有文件(包括子目录)

    一、在不使用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);

       

    }
  • 相关阅读:
    ajax请求超时
    tp5去重统计某字段的数量
    html本地存储 localStorge
    json、obj转换
    关于数组的合并arr.push() arr.push.apply()
    curl内容
    js 回车键登录
    tp5 前置操作
    STL容器
    c++文件的读写
  • 原文地址:https://www.cnblogs.com/draeag/p/910736.html
Copyright © 2011-2022 走看看