实现的功能及参考示例中包括:PHP删除目录及子目录下的文件(绝对路径或相对路径)、PHP判断目录是否有空、PHP获取文件的创建修改时间、PHP删除指定时间天数前的文件。
filemtime() 函数返回指定文件的修改时间。
filectime() 函数返回指定文件的创建时间。
注释:该函数的结果会被缓存。请使用 clearstatcache() 来清除缓存。
具体代码:
<?
date_default_timezone_set ("PRC");//设置时区
function is_empty_dir($pathdir) {
//判断目录是否为空
$d=opendir($pathdir);
$i=0;
while($a=readdir($d)){
$i++;
}
closedir($d);
if($i>2){
return false;
}else{
return true;
}
}
function deldir($path){
//如果是目录则继续
if(!file_exists($path)){
echo "目录不存在!!!";
exit;
}
if(is_dir($path)){
//扫描一个文件夹内的所有文件夹和文件并返回数组
$p = scandir($path);
//如果 $p 中有两个以上的元素则说明当前 $path 不为空
if(count($p)>2){
foreach($p as $val){
//排除目录中的.和..
if($val !="." && $val !=".."){
//如果是目录则递归子目录,继续操作
if(is_dir($path.$val)){
//子目录中操作删除文件夹和文件
deldir($path.$val.'/');
}else{
//如果是文件直接删除
echo "文件:".$path.$val.",创建时间:".date("Y-m-d H:i:s",filectime($path.$val))."<br />";
if (filectime($path.$val)<(time()-7*24*3600)){
echo "此文件早于7天前,将被删除:".$path.$val;
unlink($path.$val);
}
}
}
}
}
}
//删除目录(必须是空的,否则返回Directory not empty)
if (is_empty_dir($path)===false){
echo "错误:文件夹删除非空";
exit;
}else{
//删除成功
rmdir($path);
}
}
//设置需要删除的文件夹
$path = "E:\\777\\";//删除的目录,绝对路径,以\\结尾
//$path = "777/";//删除的目录,相对路径,以/结尾
echo "被删除路径:".$path."<br />";
deldir($path);
?>