我正在使用WinAPI创建一个简单的程序来检查目录是否存在,这是函数代码:
DEBUG:suds.client:headers = {'SOAPAction': u'"http://www.GlobalBettingExchange.com/ExternalAPI/GetPrices"', 'Content-Type': 'text/xml; charset=utf-8'}
DEBUG:suds.client:http succeeded: *long xml here*
然后我在我的主要代码中用这行代码测试它:
BOOL directoryExists( LPCSTR path ) {
DWORD pathAttributes = GetFileAttributes ( path );
return pathAttributes != INVALID_FILE_ATTRIBUTES
&& pathAttributes == FILE_ATTRIBUTE_DIRECTORY;
}
看起来我得到了"找不到目录"无论我尝试输入什么绝对路径。无论如何,相对路径成功!
我在哪里失败了? :|
提前致谢!
答案 0 :(得分:5)
GetFileAttributes
的返回值是位字段,而不是单个值,并且每个文件属性常量都包含一个位掩码,因此您应该像这样检查它:
return (INVALID_FILE_ATTRIBUTES != pathAttributes)
&& (0 != (pathAttributes & FILE_ATTRIBUTE_DIRECTORY));
此外,您应该使用GetFileAttributesW
和宽字符路径,因为GetFileAttributesA
无法处理Unicode路径。
答案 1 :(得分:1)
您没有正确检查FILE_ATTRIBUTE_DIRECTORY位。 试试这个:
/**
* @Assert\Regex(
* pattern = "/^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9!@#$%^&*()_]+){8,20}$"/",
*
* rest of options...
*
* )
*/