zoukankan      html  css  js  c++  java
  • 遍历和删除文件夹

    遍历文件夹

    方式一:递归遍历文件夹

    /**
     * 递归遍历文件夹
     * @param string $dir
     * @return array
     * 返回一个数组 结构为:
     * array{
     *  'dirs'=>[], 指定目录下的文件夹列表
     *  'files'=>[],指定目录下的文件列表
     * }
     */
    function scanfDir1($dir = '', &$ret = array())
    {
        if ($handle = opendir($dir)) {
            while (false !== ($file = readdir($handle))) {
                if ($file != "." && $file != "..") {
                    $cur_path = $dir . DIRECTORY_SEPARATOR . $file;
                    if (is_dir($cur_path)) {
                        $ret['dirs'][] = $cur_path;
                        scanfDir1($cur_path, $ret);
                    } else {
                        $ret ['files'] [] = $cur_path;
                    }
                }
            }
            closedir($handle);
        }
        return $ret;
    }

    方式二:递归遍历文件夹:与上述方式一样,只不过是用内置函数scandir()代替opendir()和readdir()的过程

    /**
     * 递归遍历文件夹:与上述方式一样,只不过是用内置函数scandir()代替opendir()和readdir()的过程
     * @param string $dir
     * @return array
     * 返回一个数组 结构为:
     * array{
     *  'dirs'=>[], 指定目录下的文件夹列表
     *  'files'=>[],指定目录下的文件列表
     * }
     */
    function scanfDir2($dir = '', &$ret = array())
    {
        if (!is_dir($dir)) {
            return array();
        }
    
        $arr = scandir($dir); //扫描一个文件夹内的所有文件夹和文件并返回数组
        foreach ($arr as $key => $value) {
            if ($value != "." && $value != "..") {
                $cur_path = $dir . DIRECTORY_SEPARATOR . $value;
                if (is_dir($cur_path)) {
                    $ret['dirs'][] = $cur_path;
                    scanfDir2($cur_path, $ret);
                } else {
                    $ret ['files'] [] = $cur_path;
                }
            }
        }
        return $ret;
    }

     删除文件夹

    方式一:递归删除文件夹

    /**
     * 删除目录
     * @param string $dir 目录地址
     */
    function delDir1($dir)
    {
        if ($handle = opendir($dir)) {
            while (false !== ($file = readdir($handle))) {
                if ($file != "." && $file != "..") {
                    $cur_path = $dir . DIRECTORY_SEPARATOR . $file;
                    if (is_dir($cur_path)) {
                        delDir1($cur_path);
                    } else {
                        @unlink($cur_path);
                    }
                }
            }
        }
        @rmdir($dir);
    }

    方式二:递归删除文件夹,与上述方式一样,只不过是用内置函数scandir()代替opendir()和readdir()的过程

    /**
     * 删除目录:与上述方式一样,只不过是用内置函数scandir()代替opendir()和readdir()的过程
     * @param string $dir 目录地址
     */
    function delDir2($dir)
    {
        if (!is_dir($dir)) {
            return;
        }
    
        $arr = scandir($dir);//扫描一个文件夹内的所有文件夹和文件并返回数组
        foreach ($arr as $key => $value) {
            if ($value != "." && $value != "..") {
                $cur_path = $dir . DIRECTORY_SEPARATOR . $value;
                if (is_dir($cur_path)) {
                    delDir2($cur_path);
                } else {
                    @unlink($cur_path);
                }
            }
        }
        @rmdir($dir);
    }
  • 相关阅读:
    CentOS下安装SecureCRT的sz/rz工具包
    MyISAM InnoDB 区别
    PHP中extract()函数的妙用
    卸载rpm包遭遇error: specifies multiple packages
    获取textarea的光标位置,并插入数据
    如何使页面中的INPUT按指定的顺序移动焦点
    nginx 跑php时找不到文件报no input file specified.
    php高并发状态下文件的读写(fopen,fwrite,fread)
    gearman php 分布式搭建
    RPM包制作与实战
  • 原文地址:https://www.cnblogs.com/jxl1996/p/10234669.html
Copyright © 2011-2022 走看看