<BR>function Files($path) <BR>{ <BR>foreach(scandir($path) as $line) <BR>{ <BR>if($line=='.'||$line=='..') continue; <BR>if(is_dir($path.'/'.$line)) Files($path.'/'.$line); <BR>else echo '<li>'.$path.'/'.$line.'</li>'; <BR>} <BR>} <BR>
PHP遍历文件及文件夹
加入给定文件夹 C:\\Windows\\AppPatch
1.首先获取这个文件夹下面的所有东西,也就是文件,文件夹,放一个数组里面
$fileArr = array(
‘files’ => array(), //文件放一个数组
‘dirs’ => array(), //文件夹放一个数组
)
2.如果存在子文件夹,遍历子文件夹,获取文件夹和文件,同样放进那个数组,如此循环,一个不漏
<BR><?php <BR>$dir = 'F:\\game'; <BR>function read_dir_all($dir) { <BR>$ret = array('dirs'=>array(), 'files'=>array()); <BR>if ($handle = opendir($dir)) { <BR>while (false !== ($file = readdir($handle))) { <BR>if($file != '.' && $file !== '..') { <BR>$cur_path = $dir . DIRECTORY_SEPARATOR . $file; <BR>if(is_dir($cur_path)) { <BR>$ret['dirs'][$cur_path] = read_dir_all($cur_path); <BR>} else { <BR>$ret['files'][] = $cur_path; <BR>} <BR>} <BR>} <BR>closedir($handle); <BR>} <BR>return $ret; <BR>} <BR>$p = read_dir_all($dir); <BR>echo '<pre class="prettyprint linenums">'; <BR>var_dump($p); <BR>echo '
‘;
?>
php遍历一个文件夹下的所有目录及文件
在面试中我们经常遇到这个题目:php遍历一个文件夹下的所有文件和子文件夹。
这个题目有好多种解决方法。但大致思路都一样。采用递归。
<BR>$path = './filepath'; <BR>function getfiles($path) <BR>{ <BR>if(!is_dir($path)) return; <BR>$handle = opendir($path); <BR>while( false !== ($file = readdir($handle))) <BR>{ <BR>if($file != '.' && $file!='..') <BR>{ <BR>$path2= $path.'/<a style="color:transparent">本@文来源gao($daima.com搞@代@#码(网5</a><strong>搞gaodaima代码</strong>'.$file; <BR>if(is_dir($path2)) <BR>{ <BR>echo ' '; <BR>echo $file; <BR>getfiles($path2); <BR>}else <BR>{ <BR>echo ' '; <BR>echo $file; <BR>} <BR>} <BR>} <BR>} <BR>print_r( getfiles($path)); <BR>echo '<HR>'; <BR>function getdir($path) <BR>{ <BR>if(!is_dir($path)) return; <BR>$handle = dir($path); <BR>while($file=$handle->read()) <BR>{ <BR>if($file!='.' && $file!='..') <BR>{ <BR>$path2 = $path.'/'.$file; <BR>if(is_dir($path2)) <BR>{ <BR>echo $file."\t"; <BR>getdir($path2); <BR>}else <BR>{ <BR>echo $file.' '; <BR>} <BR>} <BR>} <BR>} <BR>getdir($path); <BR>echo '<HR>'; <BR>function get_dir_scandir($path){ <BR>$tree = array(); <BR>foreach(scandir($path) as $single){ <BR>if($single!='.' && $single!='..') <BR>{ <BR>$path2 = $path.'/'.$single; <BR>if(is_dir($path2)) <BR>{ <BR>echo $single."\r\n"; <BR>get_dir_scandir($path2); <BR>}else <BR>{ <BR>echo $single."\r\n"; <BR>} <BR>} <BR>} <BR>} <BR>get_dir_scandir($path); <BR>echo ' <BR><HR>'; <BR>function get_dir_glob(){ <BR>$tree = array(); <BR>foreach(glob('./curl/*') as $single){ <BR>echo $single."\r\n"; <BR>} <BR>} <BR>get_dir_glob(); <BR>echo ' <BR><HR>'; <BR>function myscandir($path) <BR>{ <BR>if(!is_dir($path)) return; <BR>foreach(scandir($path) as $file) <BR>{ <BR>if($file!='.' && $file!='..') <BR>{ <BR>$path2= $path.'/'.$file; <BR>if(is_dir($path2)) <BR>{ <BR>echo $file; <BR>myscandir($path2); <BR>}else <BR>{ <BR>echo $file.' '; <BR>} <BR>} <BR>} <BR>} <BR>myscandir($path); <BR>echo '<HR>'; <BR>function myglob($path) <BR>{ <BR>$path_pattern = $path.'/*'; <BR>foreach(glob($path_pattern) as $file) <BR>{ <BR>if(is_dir($file)) <BR>{ <BR>echo $file; <BR>myscandir($file); <BR>}else <BR>{ <BR>echo $file.' '; <BR>} <BR>} <BR>} <BR>myglob($path); <BR>