首页 >php教程 >PHP源码 >递归的创建目录

递归的创建目录

PHP中文网
PHP中文网原创
2016-05-25 16:59:021240浏览

递归创建目录、删除目录

windows api中没有提供现成的多层创建目录、删除目录。这里修改了部分代码实现递归创建目录、删除目录。

//删除目录

bool deletedirectory(char* sdirname) 

    cfilefind tempfind; 
    char stempfilefind[200] ;
    
    sprintf(stempfilefind,"%s\\*.*",sdirname); 
    bool isfinded = tempfind.findfile(stempfilefind); 
    while (isfinded) 
 { 
        isfinded = tempfind.findnextfile(); 
        
        if (!tempfind.isdots()) 
  { 
            char sfoundfilename[200]; 
            strcpy(sfoundfilename,tempfind.getfilename().getbuffer(200)); 
            
            if (tempfind.isdirectory()) 
   { 
                char stempdir[200]; 
                sprintf(stempdir,"%s\\%s",sdirname,sfoundfilename); 
                deletedirectory(stempdir); 
            } 
            else 
   { 
                char stempfilename[200]; 
                sprintf(stempfilename,"%s\\%s",sdirname,sfoundfilename); 
                deletefile(stempfilename); 
            } 
        } 
    } 
    tempfind.close(); 
    if(!removedirectory(sdirname)) 
 { 
        return false; 
    } 
    return true; 
}

// 判断目录是否存在
bool folderexists(cstring s)
{
    dword attr; 
    attr = getfileattributes(s); 
    return (attr != (dword)(-1) ) &&
        ( attr & file_attribute_directory); 
}

// 创建目录

bool createdir(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=createdir(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;
}

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn