使用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>