rt
我想的是WIN32_FIND_DATA lpAttri;
GetFileAttributesEx(tempFilePath,GetFileExInfoStandard,&lpAttri);
if(lpAttri.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY) //是一个文件夹
{
...
}
//tempFilePath是文件路径,比如是c:\xx\yy\12,现在就是要判断12是文件还是文件夹但判断不了啊,高手指导下~

解决方案 »

  1.   

    怎么判断不了?是GetFileAttributesEx执行失败了还是获取的属性不对?
    这种情况下GetFileAttributesEx最后一个参数应该指向WIN32_FILE_ATTRIBUTE_DATA结构,不知道函数内部是否有判断,还是换成WIN32_FILE_ATTRIBUTE_DATA试试比较好。
      

  2.   

    MatchesMask(FILE_ATTRIBUTE_DIRECTORY);
    返回值为0,不是文件夹.
      

  3.   

    DWORD attr = GetFileAttributes(file)
    attr&FILE_ATTRIBUTE_DIRECTORY
      

  4.   

    应该是可以获取属性的,难道你是在Vista下工作?我也遇到过获取的属性居然MS没定义~~!
      

  5.   

    我上面就是用的WIN32_FILE_ATTRIBUTE_DATA结构啊
      

  6.   

    下面几种方法,挑一个能用的. TCHAR tszFn[] = _T("D:\\111\\222"); 
    if (0 == _taccess(tszFn, 0)) { // You should include <io.h> at first.
    # if 1
    FILE *fp = NULL;  if( (fp = fopen(tszFn, "rb")) == NULL) 

    TRACE("fopen: directory."); 

    else 

    fclose(fp);  TRACE("fopen: file."); 
    }
    # endif # if 1
                    // You should include "Shlwapi.h" and add Shlwapi.lib to your project.
    WIN32_FIND_DATA wfd; 
    FindFirstFile(tszFn, &wfd); 
    if (FILE_ATTRIBUTE_DIRECTORY & wfd.dwFileAttributes) 

    TRACE("FindFirstFile: directory."); 

    else 

    TRACE("FindFirstFile: file."); 
    }
    # endif # if 1
    BOOL bIsDirectory = ::PathIsDirectory(tszFn); 
    if (bIsDirectory) 

    TRACE("PathIsDirectory: directory."); 

    else 

    TRACE("PathIsDirectory: file."); 
    }
    # endif
    }
      

  7.   

    应该可以判断的吧,我遍利目录时,就是用这个结构判断的如果真的不行,就换一种方法,用CFile打开它,如果能打开,就是文件,如果打不开,就是文件夹喽
      

  8.   

    先用GetFileName()得到文件后缀,再用IsDirectory() 和IsDots判断是否为文件
      

  9.   

    你的函数用得是否有问题?用GetFileAttributes看看。
    这是我找的一个网页,希望对你有帮助。
    http://topic.csdn.net/t/20040627/01/3125681.html