PHP 遍历文件实现代码

时间:2022-06-06 16:15:05

代码如下:


function Files($path) 

foreach(scandir($path) as $line) 

if($line=='.'||$line=='..') continue; 
if(is_dir($path.'/'.$line)) Files($path.'/'.$line); 
else echo '<li>'.$path.'/'.$line.'</li>'; 


PHP遍历文件及文件夹 
加入给定文件夹 C:\\Windows\\AppPatch 
1.首先获取这个文件夹下面的所有东西,也就是文件,文件夹,放一个数组里面 
$fileArr = array( 
'files' => array(), //文件放一个数组 
'dirs' => array(), //文件夹放一个数组 

2.如果存在子文件夹,遍历子文件夹,获取文件夹和文件,同样放进那个数组,如此循环,一个不漏 

复制代码代码如下:


<?php 
$dir = 'F:\\game'; 
function read_dir_all($dir) { 
$ret = array('dirs'=>array(), 'files'=>array()); 
if ($handle = opendir($dir)) { 
while (false !== ($file = readdir($handle))) { 
if($file != '.' && $file !== '..') { 
$cur_path = $dir . DIRECTORY_SEPARATOR . $file; 
if(is_dir($cur_path)) { 
$ret['dirs'][$cur_path] = read_dir_all($cur_path); 
} else { 
$ret['files'][] = $cur_path; 



closedir($handle); 

return $ret; 

$p = read_dir_all($dir); 
echo '<pre>'; 
var_dump($p); 
echo '</pre>'; 
?> 


php遍历一个文件夹下的所有目录及文件 
在面试中我们经常遇到这个题目:php遍历一个文件夹下的所有文件和子文件夹。 
  这个题目有好多种解决方法。但大致思路都一样。采用递归。 

复制代码代码如下:


$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."\t"; 
getdir($path2); 
}else 

echo $file.' '; 




getdir($path); 
echo '<HR>'; 
function get_dir_scandir($path){ 
$tree = array(); 
foreach(scandir($path) as $single){ 
if($single!='.' && $single!='..') 

$path2 = $path.'/'.$single; 
if(is_dir($path2)) 

echo $single."\r\n"; 
get_dir_scandir($path2); 
}else 

echo $single."\r\n"; 




get_dir_scandir($path); 
echo ' 
<HR>'; 
function get_dir_glob(){ 
$tree = array(); 
foreach(glob('./curl/*') as $single){ 
echo $single."\r\n"; 


get_dir_glob(); 
echo ' 
<HR>'; 
function myscandir($path) 

if(!is_dir($path)) return; 
foreach(scandir($path) as $file) 

if($file!='.' && $file!='..') 

$path2= $path.'/'.$file; 
if(is_dir($path2)) 

echo $file; 
myscandir($path2); 
}else 

echo $file.' '; 




myscandir($path); 
echo '<HR>'; 
function myglob($path) 

$path_pattern = $path.'/*'; 
foreach(glob($path_pattern) as $file) 

if(is_dir($file)) 

echo $file; 
myscandir($file); 
}else 

echo $file.' '; 



myglob($path);