首页 > 其他 > 详细

文件遍历及文件夹的删除

时间:2017-01-15 23:53:02      阅读:320      评论:0      收藏:0      [点我收藏+]

文件遍历有两种方法,一种使用glob函数以数组的形式取到指定目录下的文件;另一种是用opendir与closedir通过打开关闭资源的方法用readdir

函数取到所有文件,但是通过这种方法会取到“.”与“..”两个文件,这两个会返回上级目录,遍历时应跳过这两项。

1.利用glob函数遍历文件,并用filesize()函数取到制定目录下文件的总大小:

 

function ShuLiang($filename)
{
		$attr = glob($filename."/*");    //取到所有文件
		$size = 0;
		
		foreach($attr as $v)
		{
			if(is_dir($v))                     //如果是文件夹,用递归的方法回调。
			{
				$size += ShuLiang($v);
			}
			else
				{
					$size += filesize($v);
				}
		}	
		
		return $size;
}
echo ShuLiang("路径");
?>    

 

  

2.是用opendir与closedir通过打开关闭资源的方法用readdir函数取到所有文件,同样取文件总大小:

 

function Fsize($fname)
{
	$size = 0;
	$dir = opendir($fname);         //打开资源
	
	//遍历目录,找到文件,累加大小
	while($u = readdir($dir))
	{
		if($u!="." && $u!="..")
		{
			$zfname = $fname."/".$u;
			if(is_dir($zfname))
			{
				$size += Fsize($zfname);       //用递归回调
			}
			else
			{
				$size += filesize($zfname);
			}
		}
	}
	
	closedir($dir);     //关闭资源
	return $size;
}

echo Fsize("路径");

 

  

技术分享

技术分享

结果正确。

 

 文件夹删除

没有直接删除文件夹的函数,但是有删除文件的函数unlink()与删除空文件夹的函数rmdir(),同样运用递归遍历到所有文件都删除掉,最后删除这个空文件夹:

 

function ShanChu($fname)
{
	//遍历该文件夹,找到所有文件删除
	$dir = opendir($fname);
	while($n = readdir($dir))
	{
		if($n!="." && $n!="..")
		{
			$zname = $fname."/".$n;
			if(is_file($zname))
			{
				unlink($zname);
			}
			else
			{
				ShanChu($zname);
			}
		}
	}
	closedir($dir);

	//删除文件夹
	rmdir($fname);
}

ShanChu("路径");

 

  

 

文件遍历及文件夹的删除

原文:http://www.cnblogs.com/cyrfr/p/6288103.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!