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

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

  }

  }

  ?>