如何枚举一个指定目录下的文件或目录啊?

解决方案 »

  1.   

    FindFirstFile/FindNextFile/FindCloseCFileFind
      

  2.   

    WIN32_FIND_DATA
    The WIN32_FIND_DATA structure describes a file found by the FindFirstFile, FindFirstFileEx, or FindNextFile function. typedef struct _WIN32_FIND_DATA { // wfd 
        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; 
    FILE_ATTRIBUTE_DIRECTORY The handle identifies a directory.
      

  3.   

    BOOL bFind;
    CFileFind tempFind;
    bFind = tempFind.FindFile("*.*");
    while(bFind)
    {
    bFind = tempFind.FindNextFile();
    if(tempFind.IsDirectory()&& !tempFind.IsDots())
    {
       //是文件夹
    }
    if( !tempFind.IsDirectory() && !tempFind.IsDots() )
    {
      //是文件
    }
      

  4.   

    #define _WIN32_WINNT 0x0501#include <windows.h>
    #include <string.h>
    #include <stdio.h>int main(int argc, char *argv[])
    {
       WIN32_FIND_DATA FindFileData;
       HANDLE hFind = INVALID_HANDLE_VALUE;
       char DirSpec[MAX_PATH];  // directory specification
       DWORD dwError;   printf ("Target directory is %s.\n", argv[1]);
       strncpy (DirSpec, argv[1], strlen(argv[1])+1);
       strncat (DirSpec, "\\*", 3);   hFind = FindFirstFile(DirSpec, &FindFileData);   if (hFind == INVALID_HANDLE_VALUE) 
       {
          printf ("Invalid file handle. Error is %u\n", GetLastError());
          return (-1);
       } 
       else 
       {
          printf ("First file name is %s\n", FindFileData.cFileName);
          while (FindNextFile(hFind, &FindFileData) != 0) 
          {
             printf ("Next file name is %s\n", FindFileData.cFileName);
          }
        
          dwError = GetLastError();
          FindClose(hFind);
          if (dwError != ERROR_NO_MORE_FILES) 
          {
             printf ("FindNextFile error. Error is %u\n", dwError);
             return (-1);
          }
       }
       return (0);
    }