使用PHP遍历文件目录与清除目录中文件的实现详解

  今天无聊中练习了一下PHP遍历文件目录的程序,编写了以下两个程序,不过质量不是很好,轻拍~~~

  1、清除PHP缓存文件

  

复制代码 代码如下:

  <?php

  function read_dir($dir,$file)

  {

  $a =strpos($file,".php");

  if($a>0)

  {

  unlink($dir . $file);

  echo "delete $dir$file <br>";

  return true;

  }

  if(strpos($file,".") === 0 || strpos($file,".") !== false ) return true;

  if(strpos($file,".") === false || strpos($dir,"/") === false)

  {

  $dir = $dir . $file . "/";

  if(!is_dir($dir)) return false;

  $dh = opendir($dir);

  while(($file = readdir($dh)) != false)

  {

  read_dir($dir,$file);   //递归调用

  }

  }

  }

  function clear_caches()

  {

  $dir = "./temp/";  //要清除的PHP缓存文件目录

  if(!is_dir($dir)) die("It is not a dir");

  $dh = opendir($dir);

  while(($file = readdir($dh) )!=false)

  {

  //var_dump($file);

  read_dir($dir,$file);

  }

  }

  ?>

   2、遍历目录中所有文件

  

复制代码 代码如下:

  <html>

  <head>

  <meta http-enquiv="Content-Type" content="text/html;charset=gb2312">

  <title>查看目录</title>

  </head>

  <body>

  <table width="600" align="center">

  <tr>

  <th width="50%">文件名</th>

  <th width="25%">修改时间</th>

  <th width="25%">文件大小(k)</th>

  </tr>

  <?php

  //$dir = "./admin/";

  $dir = "c:/";

  $up_dir = "上级目录";

  $up_url = $dir;

  if(isset($_REQUEST['act']) && $_REQUEST['act']=='list_dir')

  {

  if(emptyempty($_REQUEST['dir']))

  {

  $up_dir="目录为空!";

  }

  $dir = isset($_REQUEST['dir']) ? $_REQUEST['dir'] : $dir;

  }

  if(!is_dir($dir))

  {

  $up_dir="无效目录!";

  }

  ?>

  <tr>

  <td colspan="3">

  <?php

  if(strpos($up_dir,"上级目录")!==false)

  {

  //if($up_url=="") echo $up_dir;

  if($dir != "./admin/")

  {

  $up_url = substr($dir,0,-1);

  $k = strrpos($up_url,"/");

  $up_url = substr($up_url,0,$k-strlen($up_url));

  $up_url = $up_url ."/";

  }

  echo "<a href=\"test.php?act=list_dir&dir=$up_url\">$up_dir</a>";

  }

  else

  {

  echo $up_dir;

  die();

  }

  ?>

  </td>

  </tr>

  <?php

  $up_dir = $dir;

  $dh = opendir($dir);

  while(($file=readdir($dh)) != false)

  {

  if($file != "." && $file != ".." && $file != ".svn" )

  {

  if(strpos($file,".") !==false)

  {

  $time = date("Y-m-d H:i:s", filectime($dir . $file));

  $size = filesize($dir . $file)/1000;

  echo "<tr><td>$file</td><td>$time</td><td>$size</td></tr>";

  }

  else

  {

  $time = date("Y-m-d H:i:s.", filectime($dir . $file));

  $size = filesize($dir . $file)/1000;

  $dir = $dir . $file ."/";

  echo "<tr><td><a href =\"test.php?act=list_dir&dir=$dir\">$file</a></td><td>$time</td><td>$size</td></tr>";

  $dir = $up_dir;

  }

  }

  }

  ?>

  </table>

  <?php die();  ?>

  </body>

  </html>