<?php
/**
* 遍历并得到某个目录下的所有文件名 如 f:/1/1.txt
* @author dhgate
*/
/**
* 遍历函数 getAllFiles()
* @param string $filedir 要遍历的目录
* @return array 遍历的结果
*/
function getAllFiles($filedir) {
$allfiles = array(); //文件名数组
$tempArr = array(); //临时文件名数组
if (is_dir($filedir)) {//判断要遍历的是否是目录
if ($dh = opendir($filedir)) {//打开目录并赋值一个目录句柄(directory handle)
while (FALSE !== ($filestring = readdir($dh))) {//读取目录中的文件名
if ($filestring != '.' && $filestring != '..') {//如果不是.和..(每个目录下都默认有.和..)
if (is_dir($filedir . $filestring)) {//该文件名是一个目录时
$tempArr = getAllFiles($filedir . $filestring . '/');//继续遍历该子目录
$allfiles = array_merge($allfiles, $tempArr); //把临时文件名和临时文件名组合
}
else if (is_file($filedir . $filestring)) {
$allfiles[] = $filedir . $filestring; //如果该文件名是一个文件不是目录,直接赋值给文件名数组
}
}
}
} else {//打开目录失败
exit('Open the directory failed');
}
closedir($dh);//关闭目录句柄
return $allfiles;//返回文件名数组
}
else {//目录不存在
exit('The directory is not exist');
}
}
//下面$directory为当前目录下的file目录 如果要遍历其它目录,请写成 $directory = 'f:/目录/';最后一定要以/结尾
//如果目录为 'f:\a\a'要写成 'f:/a/a/'
$directory = str_replace('\\', '/', realpath(dirname(__FILE__).'/file') . '/');
echo '<pre>';//格式化输出
var_dump(getAllFiles($directory));//打印文件名数组
?>