目录自定义函数,自定义函数_PHP教程
程序员文章站
2022-05-27 08:56:03
...
目录自定义函数,自定义函数
PHP中并不提供查询目录大小、复制目录、删除有文件的目录的函数,我们需要自己编写
这个函数只要传递一个url,就能递归查询目录中的文件大小,从而统计出目录大小
1 php 2 function dirSize($dir){ 3 $dirsize = 0; 4 $url = opendir($dir); 5 while($filename = readdir($url)){ 6 $file = $dir.'/'.$filename; 7 if(!($filename=='.' || $filename=='..')){ 8 if(is_dir($file)){ 9 $dirsize += dirSize($file); 10 }else{ 11 $dirsize += filesize($file); 12 } 13 } 14 } 15 closedir($url); 16 return $dirsize; 17 }
这个函数需要传递两个url,分别是旧目录和新目录,就能复制该目录及文件
1 php 2 function copyDir($dirSrc,$dirTo){ 3 if(is_file($dirTo)) 4 { 5 echo '目标不是目录不能创建!'; 6 return; 7 } 8 if(!file_exists($dirTo)) 9 { 10 mkdir($dirTo); 11 } 12 $dir_handle = @opendir($dirSrc); 13 if($dir_handle) 14 { 15 while($filename = readdir($dir_handle)) 16 { 17 if($filename!="." && $filename!="..") 18 { 19 $subSrcFile = $dirSrc . "\\".$filename; 20 $subToFile = $dirTo . "\\".$filename; 21 22 if(is_dir($subSrcFile)) 23 { 24 copyDir($subSrcFile, $subToFile); 25 } 26 if(is_file($subSrcFile)) 27 { 28 copy($subSrcFile, $subToFile); 29 } 30 } 31 } 32 closedir($dir_handle); 33 } 34 }
这个函数只要传递一个url,就能递归删除目录及子目录的文件,从而删除目录
1 php 2 function rmDirAll($url){ 3 //检测要打开目录是否存在 4 if(!$dir=@opendir($url)){ 5 return false; 6 } 7 while(false !==($file=readdir($dir))){ 8 //排除当前目录与父级目录 9 if($file!=="."&&$file!==".."){ 10 $file=$url .'/'. $file; 11 //递归删除目录 12 if(is_dir($file)){ 13 rmDirAll($file); 14 }else{ 15 if(@unlink($file)){ 16 continue; 17 }else{ 18 return false; 19 } 20 } 21 } 22 if(@rmdir($url)){ 23 return true; 24 }else{ 25 return false; 26 } 27 } 28 }