FindFirstFile和FindNextFile是用来搜索当前目录下的文件,可以使用通配符,FindNextFile就是为了这个而存在的呀。

解决方案 »

  1.   

     WIN32_FIND_DATA FindData;
     HANDLE FindHandle;
     FindHandle=FindFirstFile("*.*",&FindData);
     if(FindHandle==INVALID_HANDLE_VALUE) return false;
     do{
      if(!(FindData.dwFileAttributes&FILE_ATTRIBUTE_ENCRYPTED)&&
         !(FindData.dwFileAttributes&FILE_ATTRIBUTE_TEMPORARY)&&
         !(FindData.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)&&
         !(FindData.dwFileAttributes&FILE_ATTRIBUTE_SPARSE_FILE)&&
         !(FindData.dwFileAttributes&FILE_ATTRIBUTE_REPARSE_POINT)&&
         !(FindData.dwFileAttributes&FILE_ATTRIBUTE_COMPRESSED)&&
         !(FindData.dwFileAttributes&FILE_ATTRIBUTE_OFFLINE)){   printf("%s\\%s\n",CurrentDirectoryBuffer,FindData.cFileName);
    }}
     while(FindNextFile(FindHandle,&FindData));
     FindClose(FindHandle);
      

  2.   

    FindFirstFile()启动本次查找,WIN32_FIND_DATA的一个实例将作为参数,从它你 填入想要找的文件信息。并反回HANDLE,若成功,HANDLE有效。(实际上本函数本身并不返回所要的文件信息,仅仅开始一次查找)
    FindNextFile()继续本次查找,且以上次返回的HANDLE作为参数。若成功,则WIN32_FIND_DATA的一个实例将被填充,从它你可获得想要的文件信息。(象不象CList的迭代函数)
    eg.HANDLE h;
    WIN32_FIND_DATA f;
    h=FindFirstFile(&f);
    while(h)
    {
      FindNextFile(h,&f);
      ...//从f中获取文件的信息(名称,路径,建立时间...)}
      

  3.   

    谢谢,给各位加分了还想问问:用FindFirstFile得到的HANDLE作为FindNextFile的参数,它仅仅是一个文件句柄而已,为什么还能由这个句柄中的信息来找下一个文件?如果我用另一种方法得到一个HANDLE而不用FindFirstFile得到,这个新的HANDLE能同样作为FindNextFile的参数得到同样的返回直吗?
      

  4.   

    因为还有一些信息是自动从FindFirstFile函数运行后得到的!