遍历和删除文件夹
遍历文件夹
方式一:递归遍历文件夹
/** * 递归遍历文件夹 * @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); }
=======================================
由于本人水平有限,文章在表述和代码方面如有不妥之处,欢迎批评指正。留下你的脚印,欢迎评论哦。你也可以关注我,一起学习哦!