php visitFile()遍历指定文件夹函数

时间:2022-03-30 16:48:11

注:visitFile()有少量修改 

复制代码代码如下:


<? 
// 查看指定文件夹的文件 
$fileList = array(); 
function visitFile($path) 

global $fileList; 
$path = str_replace("\\", "/", $path); 
$fdir = dir($path); 
while (($file = $fdir->read()) !== false) 

if($file == '.' || $file == '..'){ continue; } 
$pathSub = preg_replace("*/{2,}*", "/", $path."/".$file); // 替换多个反斜杠 
$fileList[] = is_dir($pathSub) ? $pathSub."/" : $pathSub; 
if(is_dir($pathSub)){ visitFile($pathSub); } 

$fdir->close(); 
return $fileList; 

?> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
<form method="get"> 
<? 
$path = str_replace("\\", "/", $path); 
$path = preg_replace("*/{2,}*", "/", $path); 
?> 
路径:<input type="text" name="path" id="path" value="<?=$path;?>"/><br> 
<li>磁盘根目录 /</li> 
<li>网络本地 ./phpMyAdmin</li> 
<li>本地磁盘 file://C: 或者 C:</li> 
<br> 
<input name="action" type="submit" id="action" value="view" /> 
<input name="action" type="submit" id="action" value="delete" onclick="if(!confirm('是否删除 '+path.value+' 的所有子文件夹和子文件?')) return false;" /> 
</form> 
<? 
if(!empty($path)){ 
$path = preg_replace("*/{2,}*", "/", $path); 
$files = visitFile($path); 
switch(strtolower($_GET["action"])) 

case "view": 
foreach($files as $key => $value) 

printf("No.%4d·%s<br>\r\n", $key+1, $value); 

break; 
case "delete": 
$faileFiles = array(); 
foreach(array_reverse($files) as $value) 

if(!unlink($value)) 

array_push($faileFiles, $value); 


if(!unlink($path)) { array_push($faileFiles, $path); } 
if(count($faileFiles) > 0) 

printf("<br><br>删除失败文件(%d):<p>\r\n", count($faileFiles)); 
foreach( $faileFiles as $key => $value) 

printf("No.%4d·%s<br>\r\n", $key+1, $value); 


break; 


?>