根據目錄路徑遞迴建立目錄
阿新 • • 發佈:2018-12-21
問題描述:
給定一個目錄路徑,如果該路徑不存在則創建出來。
參考程式碼:
void CorrectPath(CString& strPath)
{
strPath.Replace(_T('/'), _T('\\'));
do
{
if (strPath.Find(_T("\\\\")) == -1)
break;
strPath.Replace(_T("\\\\"), _T("\\"));
} while (true);
}
void PathRemoveFileSpec(CString& strPath)
{
CorrectPath(strPath);
int nPos = strPath.ReverseFind(_T ('\\'));
if (nPos == -1)
{
strPath.Empty();
}
else
{
strPath = strPath.Left(nPos);
}
}
BOOL CreateDeepDirectory(LPCTSTR szPath)
{
BOOL bRetCode = FALSE;
CString strPath(szPath);
if (GetFileAttributes(szPath) != INVALID_FILE_ATTRIBUTES)
return TRUE;
bRetCode = ::CreateDirectory(szPath, NULL);
if (!bRetCode && ::GetLastError() != ERROR_ALREADY_EXISTS)
{
PathRemoveFileSpec(strPath);
if (strPath.IsEmpty()) return FALSE;
bRetCode = CreateDeepDirectory(strPath);
if (!bRetCode) return FALSE ;
bRetCode = ::CreateDirectory(szPath, NULL);
if (!bRetCode && ::GetLastError() != ERROR_ALREADY_EXISTS)
return FALSE;
}
return TRUE;
}
int _tmain(int argc, _TCHAR* argv[])
{
CreateDeepDirectory(L"C:\\abc\\def\\");
return 0;
}