Windows多级目录创建API代码
//判断目录是否存在,若不存在则创建
__inline static
BOOL CreateCascadeDirectory(LPCSTR lpPathName, //Directory name
LPSECURITY_ATTRIBUTES lpSecurityAttributes = NULL // Security attribute
)
{
CHAR* pToken = NULL;
CHAR czPathTemp[MAX_PATH] = { 0 };
CHAR czPathName[MAX_PATH] = { 0 };
strcpy(czPathName, lpPathName);
pToken = strtok(czPathName, ("\\"));
while (pToken)
{
sprintf(czPathTemp, ("%s%s\\"), czPathTemp, pToken);
//创建失败时还应删除已创建的上层目录,此次略
if (!CreateDirectoryA(czPathTemp, lpSecurityAttributes))
{
DWORD dwError = GetLastError();
if (dwError != ERROR_ALREADY_EXISTS && dwError != ERROR_ACCESS_DENIED)
{
return FALSE;
}
}
pToken = strtok(NULL, ("\\"));
}
return TRUE;
}