> php教程 > PHP源码 > 본문

递归的创建目录

PHP中文网
풀어 주다: 2016-05-25 16:59:02
원래의
1173명이 탐색했습니다.

递归创建目录、删除目录

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;
}

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!