当前位置:Gxlcms > PHP教程 > 目录自定义函数

目录自定义函数

时间:2021-07-01 10:21:17 帮助过:16人阅读

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 }

以上就介绍了目录自定义函数,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

人气教程排行