// 判断目录是否存在
bool FolderExists(std::string strFolderPath)
{
DWORD attr;
attr = ::GetFileAttributesA(strFolderPath.c_str());
return (attr != (DWORD)(-1)) && (attr & FILE_ATTRIBUTE_DIRECTORY);
}
// 创建目录
bool CreateFolder(std::string strFolderPath)
{
// window的详细目录, 一定有"C:/", "D:/"之类的样式
// 这里我使用路径最后要求有"//"
if(strFolderPath.substr(1, 1) != std::string(":") || strFolderPath.length() < 3 ||
strFolderPath.substr(strFolderPath.length() - 1) != std::string("//"))
{
return false;
}
if(FolderExists(strFolderPath)) // 如果存在, 则不需要创建, 直接返回
{
return true;
}
else // 如果不存在, 则创建上一级目录
{
if(!CreateFolder(strFolderPath.substr(0,
strFolderPath.substr(0, strFolderPath.length() - 1).rfind("//") + 1)))
{
return false;
}
}
return ::CreateDirectoryA(strFolderPath.c_str() ,0);
}
int _tmain(int argc, _TCHAR* argv[])
{
CreateFolder("C://1//2//3//44//");
return 0;
}