GetFileAttributes以绝对路径失败

Baf*_*sta 2 c++ winapi

我正在使用WinAPI创建一个简单的程序来检查目录是否存在,这是函数代码:

BOOL directoryExists( LPCSTR path ) {
    DWORD pathAttributes = GetFileAttributes ( path );

    return pathAttributes != INVALID_FILE_ATTRIBUTES 
                  && pathAttributes == FILE_ATTRIBUTE_DIRECTORY;
 }
Run Code Online (Sandbox Code Playgroud)

然后我在我的主要代码中用这行代码测试它:

 std::cout << ( ( directoryExists( "C:\\Users\\Admin\\Desktop" ) ?  
                          "Directory found"  : "Directory not found"  ) 
          << static_cast< char >( 0xA );
Run Code Online (Sandbox Code Playgroud)

无论我尝试输入什么绝对路径,看起来我都会找到"找不到目录".无论如何,相对路径成功!

我在哪里失败了?:|

提前致谢!

use*_*670 5

返回值GetFileAttributes是一个位字段,而不是单个值,并且每个文件属性常量都包含一个位掩码,因此您应该像这样检查它:

return (INVALID_FILE_ATTRIBUTES != pathAttributes) 
              && (0 != (pathAttributes & FILE_ATTRIBUTE_DIRECTORY));
Run Code Online (Sandbox Code Playgroud)

您还应该使用GetFileAttributesW和宽字符路径,因为GetFileAttributesA无法处理Unicode路径.