php 文件操作中几种方法整理

时间:2021-03-13 00:24:36

1.获取文件夹下所有文件个数

echo ShuLiang("../0503lianxi");
function ShuLiang($filename)
{
if(is_dir($filename))//判断是不是文件夹
{
$attr=glob($filename."/*");//是文件夹则遍历目录
$sl=0;
foreach($attr as $v)
{
if(is_dir($v))
{
$sl=$sl+ShuLiang($v);
}
else
{
$sl++;
}
}
return $sl;
}
else if(is_file($filename))
{
return 1;
}
else
{
return 0;
}
}

  

2.获取文件夹下所有文件大小

方法1:

echo Size("../0505lianxi");
function Size($filename)
{
if(is_dir($filename))//判断是否是文件夹
{
$attr=glob($filename."/*");//遍历文件夹
$size=0;
foreach($attr as $v)
{
if(is_dir($v))
{
$size=filesize($filename)+Size($v);
}
else
{
$size+=filesize($v);
}
}
return $size;
}
else if(is_file($filename))
{
return filesize($filename);
}
else
{
return 0;
} }

  

方法2:

echo dir_size("../0505lianxi");
function dir_size($dir)
{
$dh = opendir($dir); //打开目录,返回一个目录流
$size = 0; //初始大小为0
while(false !== ($file = @readdir($dh)))
{ //循环读取目录下的文件
if($file!='.' and $file!='..')
{
$path = $dir.'/'.$file; //设置目录,用于含有子目录的情况
if(is_dir($path))
{
$size += $this->dir_size($path); //递归调用,计算目录大小
}
elseif(is_file($path))
{
$size += filesize($path); //计算文件大小
}
}
}
closedir($dh); //关闭目录流
return $size; //返回大小
}

  

3. 删除目录:(知道就好,不要轻易尝试,容易删除所有文件)

<?php
function deldir($dirname) {
if(!file_exists($dirname)) {
die("文件夹不存在!");
}
//如果是文件,直接删除即可
if(is_file($dirname)) {
unlink($dirname);
exit();
} //打开目录资源
$dir = opendir($dirname); while($filename = readdir($dir)) {
if($filename !="." && $filename!="..") { //*******
$filename = $dirname."/".$filename; if(is_dir($filename) ) {
deldir($filename);
}else {
unlink($filename);
} }
} closedir($dir);
rmdir($dirname);
}