php递归创建多层级目录的方法

发布时间:2020-10-18编辑:脚本学堂
本文介绍了php建立多层级目录的方法,有关php目录操作的实例教程,需要的朋友参考下。

php建立多层级目录的实现方法,php递归创建目录的方法。

例子:
 

复制代码 代码示例:
<?php
/**
 *根据路径path建立多级目录
 *$dir目标目录 $mode权限,0700表示最高权限
*/
function makedir( $dir , $mode = "0700" ) {
  if(strpos($dir , "/" )){
    $dir_path = "" ;
    $dir_info = explode ( "/" , $dir );
    foreach($dir_info  as  $key => $value ){
      $dir_path .= $value ;
      if (!file_exists($dir_path )){
        @mkdir ( $dir_path , $mode ) or  die ( "建立文件夹时失败了" );
        @chmod ( $dir_path , $mode );
      } else {
        $dir_path .= "/" ;
 continue ;
 }
      $dir_path .= "/" ;
    }
    return $dir_path ;
  } else {
 @mkdir( $dir , $mode ) or die( "建立失败了,请检查权限" );
    @chmod ( $dir , $mode );
    return $dir ;
  }
} //end makedir
makedir( "0/1/2/3/" );

php目录操作代码

例1:
 

复制代码 代码示例:
<?php
    /**
    * listdir
    */
    header("content-type:text/html;charset=utf-8");
    $dirname = "./final/factapplication";
    function listdir($dirname) {
        $ds = opendir($dirname);
        while (false !== ($file = readdir($ds))) {
            $path = $dirname.'/'.$file;
            if ($file != '.' && $file != '..') {
                if (is_dir($path)) {
                    listdir($path);
                } else {
                    echo $file."<br>";
                }
            }
        }
        closedir($ds);
    }
    listdir($dirname);
 

核心:递归的经典应用,以及文件和目录的基本操作。

例2:
 

复制代码 代码示例:
<?php
    /**
    * copydir
    */
    $srcdir = "../fileupload";
    $dstdir = "b";
    function copydir($srcdir, $dstdir) {
        mkdir($dstdir);
        $ds = opendir($srcdir);
        while (false !== ($file = readdir($ds))) {
            $path = $srcdir."/".$file;
            $dstpath = $dstdir."/".$file;
            if ($file != "." && $file != "..") {
                if (is_dir($path)) {
                    copydir($path, $dstpath);
                } else {
                    copy($path, $dstpath);
                }
            }
        }
        closedir($ds);
    }
    copydir($srcdir, $dstdir);
 

核心:copy函数。

例3:
 

复制代码 代码示例:

<?php
    /**
    * deldir
    */
    $dirname = 'a';
    function deldir($dirname) {
        $ds = opendir($dirname);
        while (false !== ($file = readdir($ds))) {
            $path = $dirname.'/'.$file;
            if($file != '.' && $file != '..') {
                if (is_dir($path)) {
                    deldir($path);
                } else {
                    unlink($path);
                }
            }
        }
        closedir($ds);

        return rmdir($dirname);
    }

    deldir($dirname);

核心:注意unlink删除的是带path的file。

例4:
 

复制代码 代码示例:
<?php
    /**
    * dirsize
    */
    $dirname = "a";
    function dirsize($dirname) {
        static $tot;
        $ds = opendir($dirname);
        while (false !== ($file = readdir($ds))) {
            $path = $dirname.'/'.$file;
            if ($file != '.' && $file != '..') {
                if(is_dir($path)) {
                    dirsize($path);
                } else {
                    $tot = $tot + filesize($path);
                }
            }
        }
        return $tot;
        closedir($ds);
    }
echo dirsize($dirname);
 

核心:通过判断$tot在哪里返回,理解递归函数