<?php
/*
*@Description:循环读取目录中的子目录和其中的文件
*
*
*/
class find{
// public $dir = '';
public function findPath($dirname){
$this->dir = $dirname;
//return $this->dir;
if(!is_dir($this->dir)){
return false;
}
$dirs[] = '';//用于记录目录
$files = array(); //用于记录文件
while(list($k, $path) = each($dirs)){
$absDirPath = "$this->dir/$path";//当前要遍历的目录的绝对路径
$handle = opendir($absDirPath);//打开目录句柄
while(false !== $item = readdir($handle)){
if($item == '.' || $item == '..' ) continue;
$relPath = "$path/$item";//子项目相对路径
$absPath = "$this->dir/$relPath";//子项目绝对路径
if(is_dir($absPath)){
$dirs[] = $relPath;
}else{
$files[] = $relPath;
}
}
closedir($handle);
}
// array_walk($dirs, 'fullName'); //个人觉得此方法可行,但是实际中遇到了问题
// array_walk($files, 'fullName');
$dirnums = count($dirs);
$filenums = count($files);
for($i = 0; $i < $dirnums; $i++){
if(!empty($dirs[$i])){
$dirs[$i] = $this->dir.$dirs[$i];
}else{
unset($dirs[$i]);
}
}
for($x = 0; $x < $filenums; $x++){
if(!empty($files[$x])){
$files[$x] = $this->dir.$files[$x];
}
}
return array($dirs, $files);
}
/*
*@Description:得到完整的路径名
*
*/
//public function fullName($item){
// $item = $this->dir.$item;
//}
}
$dirname = 'C:/AppServ/www/homework2';
$find = new find();
$result = $find -> findPath($dirname);
print_r($result);
?>
/*
*@Description:循环读取目录中的子目录和其中的文件
*
*
*/
class find{
// public $dir = '';
public function findPath($dirname){
$this->dir = $dirname;
//return $this->dir;
if(!is_dir($this->dir)){
return false;
}
$dirs[] = '';//用于记录目录
$files = array(); //用于记录文件
while(list($k, $path) = each($dirs)){
$absDirPath = "$this->dir/$path";//当前要遍历的目录的绝对路径
$handle = opendir($absDirPath);//打开目录句柄
while(false !== $item = readdir($handle)){
if($item == '.' || $item == '..' ) continue;
$relPath = "$path/$item";//子项目相对路径
$absPath = "$this->dir/$relPath";//子项目绝对路径
if(is_dir($absPath)){
$dirs[] = $relPath;
}else{
$files[] = $relPath;
}
}
closedir($handle);
}
// array_walk($dirs, 'fullName'); //个人觉得此方法可行,但是实际中遇到了问题
// array_walk($files, 'fullName');
$dirnums = count($dirs);
$filenums = count($files);
for($i = 0; $i < $dirnums; $i++){
if(!empty($dirs[$i])){
$dirs[$i] = $this->dir.$dirs[$i];
}else{
unset($dirs[$i]);
}
}
for($x = 0; $x < $filenums; $x++){
if(!empty($files[$x])){
$files[$x] = $this->dir.$files[$x];
}
}
return array($dirs, $files);
}
/*
*@Description:得到完整的路径名
*
*/
//public function fullName($item){
// $item = $this->dir.$item;
//}
}
$dirname = 'C:/AppServ/www/homework2';
$find = new find();
$result = $find -> findPath($dirname);
print_r($result);
?>
来源地址:http://www.aitiblog.com/php/299.html 但是我小小改动了一下。因为那个原来的函数得到的是相对的文件名。我想要得到绝对文件名。我这里用了一个较笨的方法。请大神指点更方便的方法!