首页 > 网站 > 建站经验 > 正文

php目录遍历实现方法

2024-04-25 20:31:03
字体:
来源:转载
供稿:网友

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

listdir文件代码:

代码如下:

<?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);    

核心二:copy函数。

 copydir文件代码:

代码如下:

<?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); 

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

deldir文件代码:

代码如下:

<?php 

<?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);

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

dirsize文件代码:

代码如下:

<?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);

php常用源码下载

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表