php写一个函数,能够遍历一个文件夹下的所有文件和子文件夹
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php写一个函数,能够遍历一个文件夹下的所有文件和子文件夹相关的知识,希望对你有一定的参考价值。
谢谢了 送上身上最后的100分表示谢谢 要源代码
最近刚写的,可以遍历指定目录下的所有文件、文件夹、特定后缀的文件:
* 遍历目录
* @param string $dir 绝对/相对路径
* @param string $filter 默认*返回所有文件及文件夹,*.php仅返回php文件,如果$patten为GLOB_BRACE可实现多文件筛选,如*.php,html,返回php和html文件
* @param const $patten 默认GLOB_BRACE,可选:GLOB_ONLYDIR,更多参数请参考手册
* @param string/bool $nocache 防止本次调用的结果缓存上次的结果,如果一个脚本仅调用一次本函数,则不用管,否则得设个值
* @return array
*/
function globdir($dir, $filter = '*', $patten = GLOB_BRACE, $nocache = null)
static $file_arr = array ();
isset($nocache) && $file_arr = array ();
if (!is_dir($dir)) return;
if ($patten == GLOB_ONLYDIR)
$code = 'if (is_dir($file)) $file_arr[] = $file;globdir($file, "*", GLOB_ONLYDIR);';
else
$code = 'is_file($file) ? $file_arr[] = $file : globdir($file,"' . $filter . '",' . $patten . ');';
array_walk(glob("$dir/$filter", $patten), create_function('$file, $k, $file_arr', $code), &$file_arr);
if ($filter != '*')
array_walk(glob("$dir/*", GLOB_ONLYDIR), create_function('$dir,$k,$param', 'list($filter, $patten) = explode("|", $param);globdir($dir, $filter, $patten);'), "$filter|$patten");
return $file_arr;
参考技术A <?php
4 function traverse($path = '.')
5 $current_dir = opendir($path); //opendir()返回一个目录句柄,失败返回false
6 while(($file = readdir($current_dir)) !== false) //readdir()返回打开目录句柄中的一个条目
7 $sub_dir = $path . DIRECTORY_SEPARATOR . $file; //构建子目录路径
8 if($file == '.' || $file == '..')
9 continue;
10 else if(is_dir($sub_dir)) //如果是目录,进行递归
11 echo 'Directory ' . $file . ':<br>';
12 traverse($sub_dir);
13 else //如果是文件,直接输出
14 echo 'File in Directory ' . $path . ': ' . $file . '<br>';
15
16
17
18
19 traverse('xxtt');
20 ?> 参考技术B function show_file($path)
$handle=opendir($path);//指定文件夹
$projectContents = '';
$projectsListIgnore = array ('.','..');//去掉. 和..目录
while ($file = readdir($handle))
if (is_dir($file) && !in_array($file,$projectsListIgnore))
$projectContents .= '<li><a href="'.$file.'">'.$file.'</a></li>';
else
$projectContents .=$file;
closedir($handle);
return $projectContents;
参考技术C php 手册里就有~····· 你还这么多分 悬赏
遍历一个文件夹下的所有文件和子文件夹
遍历一个文件夹下的所有文件和子文件夹
相关函数:
1、opendir(): 函数打开一个目录句柄,可由 closedir(),readdir() 和 rewinddir() 使用。
若成功,则该函数返回一个目录流,否则返回 false 以及一个 error。可以通过在函数名前加上 "@" 来隐藏 error 的输出。
语法:opendir(path,context)
参数 |
描述 |
path |
必需。规定要打开的目录路径。 |
context |
可选。规定目录句柄的环境。context 是可修改目录流的行为的一套选项。 |
2、readdir(): 函数返回由 opendir() 打开的目录句柄中的条目。若成功,则该函数返回一个文件名,否则返回 false。
语法:readdir(dir_stream)
参数 |
描述 |
dir_stream |
必需。规定要使用的目录句柄。 |
说明:返回目录中下一个文件的文件名。文件名以在文件系统中的排序返回。
3、closedir(): 函数关闭由 opendir() 函数打开的目录句柄。
4、rewinddir() 函数重置由 opendir() 打开的目录句柄。本函数什么都不会返回。 提示:本函数重读目录,并可用于检查目录中的变化。
1 <?php 2 function scandir($dir) 3 { 4 $files=array(); 5 if(is_dir($dir)) 6 { 7 if($handle=opendir($dir)) 8 { 9 10 while(($file=readdir($handle))!==false) 11 { 12 if($file!=‘.‘ && $file!=‘..‘) 13 { 14 if(is_dir($dir.‘/‘.$file)) 15 { 16 $files[$file]=scandir($dir.‘/‘.$file); 17 } 18 else 19 { 20 $files[]=$dir.‘/‘.$file; 21 } 22 } 23 } 24 closedir($handle); 25 return $files; 26 } 27 } 28 } 29 $dir = "F:/Projects/WWW"; 30 print_r(scandir($dir)); 31 ?>
以上是关于php写一个函数,能够遍历一个文件夹下的所有文件和子文件夹的主要内容,如果未能解决你的问题,请参考以下文章