欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

目录自定义函数,自定义函数

程序员文章站 2024-04-03 22:40: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 }