做一个删除目录的函数

justfly 2002-01-24 07:45:56
function deldir($path){
if(!is_dir($path)) return false;
clearstatcache();
if(!$fp=opendir($path)) return false;
while($file=readdir($fp)){
if($file!="."&&$file!=".."){
if(is_dir($file)) deldir($path."/".$file);
clearstatcache();
if(is_file($file)) unlink($path."/".$file);
};
};
closedir($path);
rmdir($path);
return true;
};
确保目录权限足够的前提下,为什么上面这个函数会出错?
...全文
89 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
dogun 2002-01-24
  • 打赏
  • 举报
回复
我也感到奇怪,不是你程序的问题,是is_dir的问题,我在windows下有时不行(只是很少时候),然后传到服务器上,也偶尔有这个问题。不懂
ping_0818 2002-01-24
  • 打赏
  • 举报
回复
我又测了一边。没有问题!但是权限一定要够!$DirName="../temp1";(输入倪要删除的目录名就行)

RmDirFile($DirName);
ping_0818 2002-01-24
  • 打赏
  • 举报
回复
我觉得不可能!我的已经经过使用的才给你的!
dogun 2002-01-24
  • 打赏
  • 举报
回复
ping_0818(皮皮) 大侠的也会出同样的问题,怎么回事?
dogun 2002-01-24
  • 打赏
  • 举报
回复
是有些奇怪,有时能用,有时不行.各位大侠赶快研究一下吧.
主要问题就是is_dir上面,我试了试:
if(is_dir('aaa'))
echo 'yes';
else
echo 'no';
有些文件夹没问题,有些就是"Warning: stat failed for aaa (errno=2 - No such file or directory) in g:\web\try.php on line 3",但明明这些文家夹都是存在的!
还有上面有个错误,closedir($path)应该改成closedir($fp).
ping_0818 2002-01-24
  • 打赏
  • 举报
回复
Function RmDirFile($DirName)
{$nResult = 1;
if(is_dir($DirName)) //Dir sc is exist?

{

$handle = opendir($DirName);

while($file = readdir($handle))

{

if($file != ".." && $file != "." )

{

$nDelete = unlink($DirName."/".$file);

if($nDelete)

print("File : ".$DirName.$file ." Has been delete<br>");

else

{

$pathName=$DirName."/".$file;

$nResult = 0;

print("File : ".$DirName.$file ." Has not been delete<br>");

RmDirFile($pathName);

}

}

}

closedir($handle);

$nRmdir = rmdir($DirName);

if($nRmdir)

print("Dir : ".$DirName." Has been delete<br>");

else

{

$nResult = 0;

print("Dir : ".$DirName." Has not been delete<br>");

}

}else{

$nResult = 0;

print("<br>Dir($DirName) is not a dir,is_dir=*".is_dir($DirName)."*");

}

return $nResult;

}

/**************************删除文件夹和它里面的文件*************************/



$DirName="../temp1";

RmDirFile($DirName);

?>
你看我的这个怎么样!!
lyneville 2002-01-24
  • 打赏
  • 举报
回复
目录指定地方有问题
kimryo 2002-01-24
  • 打赏
  • 举报
回复
用VC写一个COM组件吧。
bombshell 2002-01-24
  • 打赏
  • 举报
回复
有它是试!
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)
{//判断目录是否为空,我的方法不是很好吧?只是看除了.和..之外有其他东西不是为空,PHP有没有给出什么

函数?
$d=opendir($pathdir);
$i=0;
while($a=readdir($d))
{
$i++;
}
closedir($d);
if($i>2){return false;}
else return true;
}
ping_0818 2002-01-24
  • 打赏
  • 举报
回复
我觉得倪的和我给你的没有什么逻辑区别,仔细想想事不是环境的问题!

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧