注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

天边云E家 shaoruisky

IT博文共享,知识的海洋

 
 
 

日志

 
 

php递归遍历指定文件夹下的所有文件  

2013-10-16 17:55:11|  分类: 网页设计 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
递归遍历指定目录下的文件,主要使用php的opendir、opendir、is_dir等函数。具体函数用法请参考php手册。
class queryDir
{
var $files;//存储文件
var $i;//数组下标
var $j;//数组下标及存储文件个数
var $startDir;//起始目录
var $temp;
var $tempDir;//存储顶级目录名
//析构函数,初始化变量
function queryDir()
{
$this->files=array();
$this->i=0;
$this->j=0;
$this->temp=0;
$this->startDir="./";
}
//取得顶级目录名称
function firstDir($startDir)
{
$this->tempDir=basename($this->startDir);
}
//遍历目录函数
function getDir($startDir,$i,$j)
{
//echo $this->startDir;
                 $handle=opendir($this->startDir);//取得目录句柄
         while(false!==($filename=opendir($handle)))
{
    $this->files[$this->i][$this->j]=$filename;//把目录下的文件,以二维数组存储
    $this->j++;//得到此目录下的文件个数
}

closedir($handle);
}
//判断是否是目录函数
function checkDir($temp)
{
for($k=2;$k<$temp;)//跳过"."和".."文件
{

if(is_dir($this->startDir.$this->files[$this->i][$k]))//判断此文件是否是目录
{
//echo "k=".$k."j=".$this->j."<br />";
$this->i=$this->files[$this->i][$k];//把当前文件作为数组下标存储
$this->j=0;//文件个数清零
$this->startDir.=$this->i."/";
$this->getDir($this->startDir,$this->i,$this->j);
$this->checkDir($this->j);//递归
$this->startDir=dirname($this->startDir)."/";//返回上一级目录
$this->i=basename($this->startDir);//重新取得此目录的数组下标
//以下修改了返回是顶级目录以及目录中和顶级目录同名时出现的问题
if($this->tempDir==$this->i && basename(dirname($this->startDir))==".")
{
$this->i=0;
}
}
echo $this->startDir.$this->files[$this->i][$k]."<br />";
$k++;
}

}

}
$obj=new queryDir;
$obj->startDir="./phpzixue.cn/";
$obj->firstDir($obj->startDir);
$obj->getDir($obj->startDir,0,0);
$obj->checkDir($obj->j);
?>
  评论这张
 
阅读(40)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016