要遍历一个文件夹里面的所有目录,列出里面所有的文件,php本身自带的有一个readdir的函数,不过只能读取当前的目录,根据这个函数,我写了另外一个函数,用来实现我的需求。
代码如下 复制代码
dirname=$dir;
$this->depth=0;
$this->tostring=”;
}
//把结果保存进多维数组
function getlist($dir=”){
if($dir==”)$dir=$this->dirname;
$d=@dir($dir);
while(false!==($item=$d->read()))
{
if($item!=”.”&&$item!=”..”)
{
$path=$dir.”/”.$item;
if(is_dir($path)){
$this->depth+=1;
$this->getlist($path);
}else{
$this->list[$this->depth][]=$item;
}
}
}
$this->list[$this->depth]['directory']=$dir;
$this->depth-=1;
$d->close();
return $this->list;
}
//字符窜化结果
function tostring($dir=”){
if($dir==”)$dir=$this->dirname;
$d=@dir($dir);
$this->tostring.=”
n”;
$this->tostring.=”directory:”.$dir.”n”;
while(false!==($item=$d->read()))
{
if($item!=”.”&&$item!=”..”)
{
$path=$dir.”/”.$item;
if(is_dir($path)){
$this->depth+=1;
$this->tostring($path);
}else{
$this->tostring.=””.$item.”n”;
}
}
}
$this->depth-=1;
$d->close();
$this->tostring.=”n”;
return $this->tostring;
}
}
$wapdir=”jquery”;
$d=new listdir($wapdir);
echo $d->tostring();
?>
要删除一个空的目录很简单~一个
rmdir() 函数就可以搞定,但是要删除一个非空目录,将不能进行快速的删除,必须先将目录中文件删除,但是目录里可能还会有子目录所以要进行递归删除~下面是我的例子~
代码如下 复制代码
function deletedir($dir){
if(!handle=@opendir($dir)){ //检测要打开目录是否存在
die(没有该目录);
}
while(false !==($file=readdir($handle))){
if($file!==.&&$file!==..){ //排除当前目录与父级目录
$file=$dir .directory_separator. $file;
if(is_dir($file)){
deletedir($file);
}else{
if(@unlink($file)){
echo 文件$file删除成功。
;
}else{
echo 文件$file删除失败!
;
}
}
}
if(@rmdir($dir)){
echo 目录$dir删除成功了。
n;
}else{
echo 目录$dir删除失败!
n;
}
}
//测试程序
$dir=/var/www/test;
deletedir($dir);
?>
http://www.bkjia.com/phpjc/633086.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/633086.htmltecharticle要遍历一个文件夹里面的所有目录,列出里面所有的文件,php本身自带的有一个readdir的函数,不过只能读取当前的目录,根据这个函数,我...