当前位置:首页 > 用PHP程序实现删除目录的三种方法实例

用PHP程序实现删除目录的三种方法实例

点击次数:1413  更新日期:2011-01-04
\n

1。递规法: //没测试


\n

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’);
}
}
}


\n

2。系统调用法


\n

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


\n

3。循环法


\n

function deltree(pathdir)
{
echo 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;
}


\n