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);?>
你看我的这个怎么样!!
{$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);?>
你看我的这个怎么样!!
主要问题就是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).
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;
}