这个题目有好多种解决方法。但大致思路都一样。采用递归。
-
$path = ./filepath; -
function getfiles($path) -
{ -
if(!is_dir($path)) return; -
$handle = opendir($path); -
while( false !== ($file = readdir($handle))) -
{ -
if($file != . && $file!=..) -
{ -
$path2= $path./.$file; -
if(is_dir($path2)) -
{ -
echo - ;
-
echo $file; -
getfiles($path2); -
}else -
{ -
echo - ;
-
echo $file; -
} -
} -
} - }
-
-
print_r( getfiles($path)); -
- echo
- <HR>;
-
- function
getdir($path) - {
-
if(!is_dir($path)) return; -
$handle = dir($path); -
while($file=$handle->read()) -
{ -
if($file!=. && $file!=..) -
{ -
$path2 = $path./.$file; -
if(is_dir($path2)) -
{ -
echo $file." "; -
getdir($path2); -
}else -
{ -
echo $file. - ;
-
} -
} -
} - }
-
getdir($path);
-
function
my_scandir($dir) - {
-
$files = array(); -
if ( $handle = opendir($dir) ) { -
while ( ($file = readdir($handle)) !== false ) { -
if ( $file != ".." && $file != "." ) { -
if ( is_dir($dir . "/" . $file) ) { -
$files[$file] = scandir($dir . "/" . $file); -
}else { -
$files[] = $file; -
} -
} -
} -
closedir($handle); -
return $files; -
} - }
opendir
说明
resource
返回一个目录句柄,可以在之后用在
如果
readdir
说明
string
返回目录中下一个文件的文件名。文件名以在文件系统中的排序返回。
请留意下面例子中检查
is_dir
说明
bool
如果文件名存在并且为目录则返回
scandir
说明
array
返回一个
默认情况下,返回值是按照字母顺序升序排列的。如果使用了可选参数