-
- function myscandir($pathname){
- foreach( glob($pathname) as $filename ){
- if(is_dir($filename)){
- myscandir($filename.'/*');
- }else{
- echo $filename.'
';
- }
- }
- }
- myscandir('D:/wamp/www/exe1/*');
- ?>
复制代码
2. 方法2
-
- function myscandir($path){
- $mydir=dir($path);
- while($file=$mydir->read()){
- $p=$path.'/'.$file;
- if(($file!=".") AND ($file!="..")){
- echo $p.'
';
- }
- if((is_dir($p)) AND ($file!=".") AND ($file!="..")){
- myscandir($p);
- }
- }
- }
- myscandir(dirname(dirname(__FILE__)));
- ?>
复制代码
二、php目录遍历函数opendir用法
opendir()函数的作用:
打开目录句柄,如果该函数成功运行,将返回一组目录流(一组目录字符串),如果失败将返回错误[error],你可以在函数的最前面加上“@”来隐藏错误.
syntax语法:opendir(directory,context) parameter
参数:description
描述:directory required. specifies the directory to stream
必要参数,指定目录对象,可选参数,指定需要处理的目录对象的context,这个context包括了一组选项,它可以对文本流的显示方式进行改变。
代码:
-
- $dir = "./";
-
- // open a known directory, and proceed to read its contents
- if (is_dir($dir))
- {
- if ($dh = opendir($dir)) {
- while (($file = readdir($dh)) !== false) {
- echo "filename: $file : filetype: " . filetype($dir . $file) . "n"."
";
- }
- closedir($dh);
- }
- }
- ?>
复制代码
三、php非递归算法遍历目录下所有文件
php不用递归实现列出目录下所有文件的代码
代码:
-
-
/**
- * PHP 非递归实现查询该目录下所有文件
- * @param unknown $dir
- * @return multitype:|multitype:string
- */
- function scanfiles($dir) {
- if (! is_dir ( $dir ))
- return array ();
// 兼容各操作系统
- $dir = rtrim ( str_replace ( '\', '/', $dir ), '/' ) . '/';
// 栈,默认值为传入的目录
- $dirs = array ( $dir );
// 放置所有文件的容器
- $rt = array ();
do {
- // 弹栈
- $dir = array_pop ( $dirs );
// 扫描该目录
- $tmp = scandir ( $dir );
foreach ( $tmp as $f ) {
- // 过滤. ..
- if ($f == '.' || $f == '..')
- continue;
-
- // 组合当前绝对路径
- $path = $dir . $f;
-
- // 如果是目录,压栈。
- if (is_dir ( $path )) {
- array_push ( $dirs, $path . '/' );
- } else if (is_file ( $path )) { // 如果是文件,放入容器中
- $rt [] = $path;
- }
- }
} while ( $dirs ); // 直到栈中没有目录
return $rt;
- }
复制代码
|