• 函数FindFirstFile


     文件查找

    Struct Lnode{

    Char table[256];         //保存文件夹名

    Struct Lnode*next;

    }

    加文件夹入链表

    Lnode *newList;

    Void AddList(char *list)          //list为文件夹名

    {

         NewList=new Lnode;

         Strcpy(NewList->table,list);

         newList->next=NULL;

         if(h->next==NULL)

            h->next=newList;       //h为头结点

         else

         {

           r->next=newList;        //r始终指向尾节点

           r=newList;

         }

    }

    FindFirstFile和FindNextFile

    HANDLE   FindFirstFile{

       LPCTSTR  IpFileName; //指向要查找的文件名(包含路径)

       LPWIN32_FIND_DATA IpFindFileData;   //输出参数,指向一个结构。此结构可以描述找到的文件或文件夹的属性。

    }

    函数调用成功则返回可供函数FindNextFile和函数FindClose使用的查找句柄,否则返回INVALID_HANDLE_VALUE;

    Typedef struct _WIN32_FIND_DATA{

    DWORD dwFileAttributes;     //文件属性

    FILETIME ftCreationTime;     //创建文件的时间

    FILETIME ftLastAccessTime;    //最近一次访问文件的时间

    FILETIME ftLastWriteTime;    //最近一次修改文件的时间

    DWORD nFileSizeHigh        //文件大小的高位字

    DWORD nFileSizeLow;        //文件大小的地位字

    DWORD dwReserved0;       //保留,未使用

    DWORD dwReserved1;       //保留,未使用

    TCHAR cFileName[MAX_PATH];    //文件的名称

    TCHAR cAlternateFileName[14];    //文件的替换名称,用文件名.后缀名表示

    } WIN32_FIND_DATA,*p WIN32_FIND_DATA;

    BOOL  FindNextFile   {

       HANDLE  hFindFile;      //此参数指向了函数FindFirstFile返回的查找句柄

    LPWIN32_FIND_DATA IpFindFileData;

    }

    函数调用成功则返回可供函数FindNextFile和函数FindClose使用的查找句柄,否则返回INVALID_HANDLE_VALUE;

    查找文件一般使用的结构

    hFindFile=FindFirstFile(IpFileName,&IpFindData);

    if(hFindFile!=INVALID_HANDLE_VALUE)

    {

          Do

    {

    }while(FindNextFile(hFindFile,&findData))

    }

    遍历目录

    Void FindFile(char *pRoad,char *pFile)

    //pRoad为要查找的路径,pFile为要查找的文件

    {

               Char FileRoad[256]={0};//要查找文件的路径

               Char DirRoad[256]={0};//存放要查找的路径

               Char FindedFile[256]={0};

               Char FindedDir[256]={0};//存放找到的是文件夹的路径

               Strcpy(FileRoad,pRoad);

               Strcpy(DirRoad,pRoad);

               Strcat(DirRoad,”\*.*”);

             

             //查找文件,把找到的放入文件夹链表

              WIN32_FIND_DATA findData;

              HANDLE hFindFile;

              hFindFile=FindFirstFile(DirRoad,&findData);

              if(hFindFile!=INVALID_HANDLE_VALUE)

              {

                      Do

    {

     If(findData.cFileName[0]==’.’)

          Continue;

    If(findData.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)

    {

        Strcpy(FindedDir,pRoad);

        Strcat(FindedDir,”\”);

        Strcat(FindDir,findData.cFileName);

    AddList(FindDir);

    Memset(FindDir,0x00,256);

    }

    }while(FindNextFile(hFindFile,&findData));

    }

    Strcat(FileRoad,”\”);

    Strcat(FileRoad,pFile);

    //查找要查找的文件

    hFindFile=FindFirstFile(FileRoad,&findData);

    if(hFindFile!=INVALID_HANDLE_VALUE)

    {

        Do{

    Strcpy(FindedFile,pRoad);

    Strcat(FindedFile,”\”);

    Strcat(FindedFile,findData.cFileName);

    Printf(“%s ”,FindedFile);

    Memset(FindedFile,0x00,256);

    }while(FindNextFile(hFindFile,&findData));

    }

    }

    Int searchFile(char * Directory,char *SeachFile)

    {

         Lnode newList;

         Strcpy(newList->table,Directory);

         newList->next=NULL;

         while(true)

         {

              Lnode *Find;

              If(r->next!=NULL)

              {

                   Find=r->next;

                   r->next=r->next->next;

                   FindFile(Find->table,searchFile);

    Else

    {

            Printf(“文件搜索完毕 ”);

           Return 0;

    }

    }

    Return 0;

    }

    重剑无锋,大巧不工
  • 相关阅读:
    【POI 2007】Office 办公楼(BIU)
    【Codeforces #130 Div2】Solutions
    【TopCoder SRM 551 Div2】Solutions
    【POI 2007】Axes of Symmetry 对称轴(osi)
    【HDU 2222】Keywords Search
    【POI 2007】Tetris Attack 正方体大作战(tet)
    【SGU 101】Domino
    【JSOI 2009】游戏 Game
    【SGU 102】Coprimes
    【Codeforces #133 Div2】Solutions
  • 原文地址:https://www.cnblogs.com/919czzl/p/4021983.html
Copyright © 2020-2023  润新知