需求:需创建一个路径,该路径包含多级文件夹
分析:CreateDirectory一次只能创建一个文件夹,可使用FindFirstFile等函数来帮助实现
分析:CreateDirectory一次只能创建一个文件夹,可使用FindFirstFile等函数来帮助实现
方法:
int CreateDir(CString strFolderPath)
{
HANDLE hFile;
WIN32_FIND_DATA fileinfo;
CStringArray m_arr; // To hold Directory Structures
BOOL bRet = FALSE;
int nIndex = 0;
CString strTemp;
hFile = FindFirstFile(strFolderPath, &fileinfo);
// if the file exists and it is a directory
if(fileinfo.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY)
{
FindClose(hFile);
return 2;
}
FindClose(hFile);
// Parse the supplied CString Directory String
m_arr.RemoveAll();
int nLength = strFolderPath.GetLength();
for(nIndex = 0; nIndex < nLength; nIndex++)
{
// If the character is not a '\', add it to csTemp
if(strFolderPath.GetAt(nIndex) != '\\')
{
strTemp += strFolderPath.GetAt(nIndex);
}
else
{
m_arr.Add(strTemp);
strTemp += '\\';
}
// If we reached the end of the file add the remaining string
if(nIndex == (nLength - 1))
{
m_arr.Add(strTemp);
}
}
for(nIndex = 1; nIndex < m_arr.GetSize(); nIndex++)
{
strTemp = m_arr.GetAt(nIndex);
bRet = CreateDirectory(strTemp, NULL);
if(TRUE == bRet)
{
SetFileAttributes(strTemp, FILE_ATTRIBUTE_NORMAL);
}
}
m_arr.RemoveAll();
hFile = FindFirstFile(strFolderPath, &fileinfo);
if(fileinfo.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY)
{
FindClose(hFile);
return 1;
}
else
{
FindClose(hFile);
return 0;
}
}