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

2018-09-21 10:10

阅读:304

  注: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;
}
}
?>


评论


亲,登录后才可以留言!