给分

解决方案 »

  1.   

    WIN32_FIND_DATA findFile;
    HANDLE nHandle = ::FindFirstFile( "*.*", &findFile );
    do
    {  
    if ( ( findFile.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY )
    {
       目录
    }
    else
    {
        文件   
    }
    }
    while( ::FindNextFile( nHandle, &findFile ) );
      

  2.   

    WIN32_FIND_DATA 结构数据中有一项为 dwFileAttributes,它记录着文件(夹)的属性
    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, *PWIN32_FIND_DATA; FILE_ATTRIBUTE_ARCHIVE The file or directory is an archive file or  directory. Applications use this attribute to  files for backup or removal.
     
    FILE_ATTRIBUTE_COMPRESSED The file or directory is compressed. For a file, this means that all of the data in the file is compressed. For a directory, this means that compression is the default for newly created files and subdirectories. FILE_ATTRIBUTE_DIRECTORY The handle identifies a directory. FILE_ATTRIBUTE_ENCRYPTED The file or directory is encrypted. For a file, this means that all data in the file is encrypted. For a directory, this means that encryption is the default for newly created files and subdirectories. FILE_ATTRIBUTE_HIDDEN The file or directory is hidden. It is not included in an ordinary directory listing. FILE_ATTRIBUTE_NORMAL The file or directory has no other attributes set. This attribute is valid only if used alone. FILE_ATTRIBUTE_OFFLINE The file data is not immediately available. This attribute indicates that the file data has been physically moved to offline storage. This attribute is used by Remote Storage, the hierarchical storage management software in Windows 2000. Applications should not arbitrarily change this attribute. FILE_ATTRIBUTE_READONLY The file or directory is read-only. Applications can read the file but cannot write to it or delete it. In the case of a directory, applications cannot delete it. FILE_ATTRIBUTE_REPARSE_POINT The file has an associated reparse point. FILE_ATTRIBUTE_SPARSE_FILE The file is a sparse file. FILE_ATTRIBUTE_SYSTEM The file or directory is part of the 
    operating system or is used exclusively by the operating system. FILE_ATTRIBUTE_TEMPORARY The file is being used for temporary storage. File systems attempt to keep all of the data in memory for quicker access, rather than flushing it back to mass storage. A temporary file should be deleted by the application as soon as it is no longer needed. 但是你不能简单地用一般的判断语句来确认“文件”和“文件夹”,因为一个文件或文件夹都有可能“同时”包含“多种”属性,并且它们的组合方式是“按位或”----也就是“|”操作。
    所以你应该这样:
    HANDLE hFind;
    WIN32_FIND_DATA dataFind;
    BOOL bMoreFiles = TRUE;//Find the first file in the main directory
     hFind = FindFirstFile(m_strMainDir + "\\*.*",&dataFind);
    //Find the loop until all files have been found
    while(hFind != INVALID_HANDLE_VALUE && bMoreFiles == TRUE)
    {
     if((dataFind.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ==  \  FILE_ATTRIBUTE_DIRECTORY) //Must be the directory
    {
      //Ignore the "." and ".." directory entries
      if(strcmp(dataFind.cFileName,"."))
      {
        if(strcmp(dataFind.cFileName,".."))
        //你的操作
       }
     }
       bMoreFiles = FindNextFile(hFind,&dataFind);
    }
    //close the handle
    FindClose(hFind);同理文件(或查找指定的文件属性)也这样
      

  3.   

    对了,上面的 m_strMainDir 为你的要找的路径(不要在最后加'\',因为我已经加了:))
      还有,你运气不错,我正好这几天在做“和查找文件(夹))有关的事,所以稍微研究了一下:)
      

  4.   

    对了,上面的 m_strMainDir 为你的要找的路径(不要在最后加'\',因为我已经加了:))
      还有,你运气不错,我正好这几天在做“和查找文件(夹))有关的事,所以稍微研究了一下:)