遍历文件夹下的所有文件和文件夹
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脚本遍历文件目录下的所有文件和目录(绝对路径)