遍历文件夹下的所有文件和文件夹

Posted jxl1996

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了遍历文件夹下的所有文件和文件夹相关的知识,希望对你有一定的参考价值。

方式一:递归遍历文件夹

/**
 * 递归遍历文件夹
 * @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();
    }

    $list = scandir($dir);
    foreach ($list as $key => $value) {
        if ($value == "." || $value == "..") {
            continue;
        }

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

 

以上是关于遍历文件夹下的所有文件和文件夹的主要内容,如果未能解决你的问题,请参考以下文章

交互式shell脚本遍历文件目录下的所有文件和目录(绝对路径)

遍历某个文件夹(目录)下的所有文件

交互式shell脚本遍历文件目录下的所有文件和目录(绝对路径)

PHP删除当前目录及其目录下的所有文件

遍历文件夹下的所有文件和文件夹

php 遍历文件夹文件问题