您的位置:首页 > 编程语言 > PHP开发

PHP中删除目录的三种方法

2010-08-21 18:06 796 查看
PHP本身有一个rmdir函数可以用来删除目录,不过要求必须是空目录,本文列举了三种方法。
1、递规法;
2、系统调用法;
3、循环法。

1、递规法:利用递归一层一层的删。

function deleteDir($dir) {
if (rmdir($dir)==false && is_dir($dir)) {
if ($dp = opendir($dir)) {
while (($file=readdir($dp)) != false) {
if (is_dir($file) && $file!='.' && $file!='..') {
deleteDir($file);
} else {
unlink($file);
}
}
closedir($dp);
} else {
exit('Not permission');
}
}
}


2、系统调用法

]function del_dir($dir) {
if (strtoupper(substr(PHP_OS, 0, 3)) == ‘WIN’) {
$str = /"rmdir /s/q /" . $dir;
} else {
$str = /"rm -Rf /" . $dir;
}
}


3、循环法

]function deltree($pathdir) {
if (is_empty_dir($pathdir))          //如果是空的
{
rmdir($pathdir);             //直接删除
}
else {             //否则读这个目录,除了.和..外
$d=dir($pathdir);
while($a=$d->read()) {
if(is_file($pathdir.'/'.$a) && ($a!='.') && ($a!='..')) {
unlink($pathdir.'/'.$a);

}
//如果是文件就直接删除
if (is_dir($pathdir.'/'.$a) && ($a!='.') && ($a!='..')) {      //如果是目录
if (!is_empty_dir($pathdir.'/'.$a))            //是否为空
{  //如果不是,调用自身,不过是原来的路径+他下级的目录名
deltree($pathdir.'/'.$a);
}
if(is_empty_dir($pathdir.'/'.$a)) {//如果是空就直接删除
rmdir($pathdir.'/'.$a);
}
}
}
$d->close();
echo /"必须先删除目录下的所有文件/";   //我调试时用的
}
}

function is_empty_dir($pathdir) {
//判断目录是否为空
$d=opendir($pathdir);
$i=0;
while($a=readdir($d)) {
$i++;
}
closedir($d);
if($i>2){
return false;
}
else return true;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: