php 文件操作中几种方法整理
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); }