/*
递归创建目录
要求:自己写函数
完成一次创建 ./a/b/c/d/e目录 这种级联目录
*/
function createTree($dir){
if(file_exists($dir)){
return ;
}
if(!is_dir(dirname($dir))){
createTree(dirname($dir));
}
mkdir($dir);
return;
}
//createTree('./e/d/c/b/a/ss');
/*
递归删除目录
要求:自己写函数
完成一次删除 ./a/b/c/d/e目录 这种级联目录
*/
function delTree($dir,$lev=1){
if(!file_exists($dir)){
echo '目录不存在'; //先判断是否存在 和 是否 文件夹 必须做的
return ;
}
if(!is_dir($dir)){ //写两个if(!) 比写 if else 嵌套两个看起来简洁多了
echo '不是文件夹';
return ;
}
$fh=opendir($dir); //来到这里 说明 已经验证过 存在 并且 是文件夹
while(($dirfile = readdir($fh))!==false){
$files = $dir . '/' . $dirfile; //以后的判断 都是这个 而不是 $dirfile 记住了
if($dirfile == '.' || $dirfile == '..'){
continue; //continue 跳出当前循环 进入下一个循环
}
if(is_file($files)){
unlink($files);
echo '删除 ' . str_repeat('-',$lev) . $files . '文件 成功<br>';
}
if(is_dir($files)){
delTree($files,$lev+1);
}
}
closedir($fh); //删除前 先关闭资源
rmdir($dir);
echo '删除 ' . str_repeat('--',$lev) . $dir . '目录 成功<br>';
}
delTree('./每日源代码');
结果:
删除 --./每日源代码/1119/01.php文件 成功
删除 --./每日源代码/1119/02.php文件 成功
删除 --./每日源代码/1119/03.php文件 成功
删除 --./每日源代码/1119/04.php文件 成功
删除 --./每日源代码/1119/05.php文件 成功
删除 --./每日源代码/1119/163news.html文件 成功
删除 --./每日源代码/1119/a.txt文件 成功
删除 --./每日源代码/1119/b.txt文件 成功
删除 --./每日源代码/1119/conf类与配置文件读取.bmp文件 成功
删除 --./每日源代码/1119/custom.txt文件 成功
删除 ----./每日源代码/1119/frame-01/include/conf.class.php文件 成功
删除 ----./每日源代码/1119/frame-01/include/config.inc.php文件 成功
删除 ----./每日源代码/1119/frame-01/include/db.class.php文件 成功
删除 ----./每日源代码/1119/frame-01/include/init.php文件 成功
删除 --------./每日源代码/1119/frame-01/include目录 成功
删除 ---./每日源代码/1119/frame-01/index.php文件 成功
删除 ------./每日源代码/1119/frame-01目录 成功
删除 --./每日源代码/1119/modea.txt文件 成功
删除 --./每日源代码/1119/modew.txt文件 成功
删除 --./每日源代码/1119/今天内容.txt文件 成功
递归总结:
不要去想多层 是怎样的 这样太复杂了 只要想两层 两层搞定了 就意味着 递归写对了~~~~·