在VC中不存在直接创建多层目录的函数,要做到这一点, 必须自己通过已有的创建目录函数递归的进行创建,下面是实现源码:
// 判断目录是否存在
bool FolderExists(CString s)
{
DWORD attr;
attr = GetFileAttributes(s);
return (attr != (DWORD)(-1) ) &&
( attr & FILE_ATTRIBUTE_DIRECTORY);
}
// 递归创建目录, 如果目录已经存在或者创建成功返回TRUE
static bool SuperMkDir(CString P)
{
int len=P.GetLength();
if ( len <2 ) return false;
if('\\'==P[len-1])
{
P=P.Left(len-1);
len=P.GetLength();
}
if ( len <=0 ) return false;
if (len <=3)
{
if (FolderExists(P))return true;
else return false;
}
if (FolderExists(P))return true;
CString Parent;
Parent=P.Left(P.ReverseFind('\\') );
if(Parent.GetLength()<=0)return false;
bool Ret=SuperMkDir(Parent);
if(Ret)
{
SECURITY_ATTRIBUTES sa;
sa.nLength=sizeof(SECURITY_ATTRIBUTES);
sa.lpSecurityDescriptor=NULL;
sa.bInheritHandle=0;
Ret=(CreateDirectory(P,&sa)==TRUE);
return Ret;
}
else
return false;
}
|
阅读(3860) | 评论(0) | 转发(0) |