您的位置:首页 > 其它

【WM】如何递归创建目录

2010-04-26 20:01 447 查看
在Windows Mobile上调用CreateDirectory()函数只能创建路径中的最后的目录,不能递规创建目录。如果任意父目录或中间目录不存在,CreateDirectory()函数会返回FALSE,调用GetLastError()函数返回错误号ERROR_PATH_NOT_FOUND。而我们在工作中经常需要递归创建目录,因此,笔者在这里介绍一个能够递归创建目录的Win32 API函数CreateDirectoryPath()。

CreateDirectoryPath()函数的原型声明出现在头文件miscsvcs.h中,使用该函数需要链接导入库ossvcs.lib。

HRESULT CreateDirectoryPath(LPCWSTR _pszPath);

根据习惯,笔者在这里也给出了该函数的实现:

HRESULT CreateDirectoryPath(LPCWSTR _pszPath)
{
TCHAR szOrig[MAX_PATH];

if (!_pszPath || !*_pszPath)
{
return E_INVALIDARG;
}

DWORD dwAttrib = GetFileAttributes(_pszPath);
if (dwAttrib != -1 && (dwAttrib & FILE_ATTRIBUTE_DIRECTORY))
{
return S_OK;
}

StringCchCopy(szOrig, MAX_PATH, _pszPath);

LPTSTR pszPath = szOrig;
if (*szOrig == TEXT('//'))
{
pszPath = szOrig + 1;
}

while (*pszPath)
{
if (*pszPath == TEXT('//'))
{
*pszPath = NULL;
CreateDirectory(szOrig, NULL);
*pszPath = TEXT('//');
}
pszPath ++;
}

CreateDirectory(szOrig, NULL);
dwAttrib = GetFileAttributes(_pszPath);
return (dwAttrib != -1 && (dwAttrib & FILE_ATTRIBUTE_DIRECTORY));
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: