我正在使用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)
无论我尝试输入什么绝对路径,看起来我都会找到"找不到目录".无论如何,相对路径成功!
我在哪里失败了?:|
提前致谢!
返回值GetFileAttributes是一个位字段,而不是单个值,并且每个文件属性常量都包含一个位掩码,因此您应该像这样检查它:
return (INVALID_FILE_ATTRIBUTES != pathAttributes)
&& (0 != (pathAttributes & FILE_ATTRIBUTE_DIRECTORY));
Run Code Online (Sandbox Code Playgroud)
您还应该使用GetFileAttributesW和宽字符路径,因为GetFileAttributesA无法处理Unicode路径.