1 <?php
2 /*
3 * Version 1.0
4 * 2014-12-11
5 * 文件夹的操作
6 * 删除,大小统计,移动,复制
7 * 文件夹的分割使用linux方式
8 *
9 */
10 //文件间的删除
11 function delete_dir($dir){
12 $dir = rtrim(str_replace("\\","/",$dir),'/').'/';//统一格式,避免格式问题出错
13 if(!file_exists($dir)){
14 exit("{$dir} is not exists!Check your input!");
15 }
16 $dh = opendir($dir);
17 readdir($dh);
18 readdir($dh);
19 while($fileName = readdir($dh)){
20 $newFileName = $dir.$fileName;
21 if(is_file($newFileName)){
22 if(unlink($newFileName)){
23 echo 'File Delete '.$newFileName.' Successfully!<br />';
24 }
25 }else if(is_dir($newFileName)){
26 $newDir = $newFileName.'/';
27 delete_dir($newDir);
28 }else{
29 echo "{$newFileName} Unkown File Type!<br />";
30 }
31 }
32 closedir($dh);
33 if(rmdir($dir)){
34 echo 'Delete Dir '.$dir.' Successfully!<hr />';
35 }
36 }
37 //文件夹大小统计
38 function calc_dir($dir){
39 $dir = rtrim(str_replace("\\","/",$dir),'/').'/';
40 if(!file_exists($dir)){
41 exit("{$dir} is not exists!Check your input!");
42 }
43 $dh = opendir($dir);
44 $size = 0;
45 readdir($dh);
46 readdir($dh);
47 while($fileName = readdir($dh)){
48 $newFileName = $dir.$fileName;
49 if(is_file($newFileName)){
50 $size += filesize($newFileName);
51 }else if(is_dir($newFileName)){
52 $newDir = $newFileName.'/';
53 $size += calc_dir($newDir);
54 }else{
55 echo "{$newFileName} Unkown File Type!<br />";
56 }
57 }
58 closedir($dh);
59 return $size;
60 }
61 //文件夹的移动
62 function cut_dir($dir,$des){
63 //$dir待移动目录,$des目标目录
64 if(!file_exists($dir)){
65 exit($dir.' is not exists!Please check your input!');
66 }
67 if(!file_exists($des)){
68 mkdir($des);
69 }
70 $dir = rtrim(str_replace("\\","/",$dir),'/');
71 if(strrpos($dir,'/')){
72 $subdir = substr($dir,strrpos($dir,'/')+1);
73 }else{
74 $subdir = $dir;
75 }
76 $dessub = rtrim(str_replace("\\","/",$des),"/").'/'.$subdir.'/';
77 $dir = $dir.'/';
78 if(!file_exists($dessub)){
79 mkdir($dessub);
80 }
81 $dh = opendir($dir);
82 readdir($dh);
83 readdir($dh);
84 while($fileName = readdir($dh)){
85 $newFileName = $dir.$fileName;
86 if(is_file($newFileName)){
87 if(rename($newFileName,$dessub.$fileName)){
88 echo $newFileName.'已经移动完成!<br />';
89 }
90 }
91 if(is_dir($newFileName)){
92 cut_dir($newFileName,$dessub);
93 }
94 }
95 closedir($dh);
96 if(rmdir($dir)){
97 echo $dir.'内的文件已经全部移动完成!<hr />';
98 }
99 }
100 //文件夹的复制
101 function copy_dir($dir,$des){
102 //$dir待移动目录,$des目标目录
103 if(!file_exists($dir)){
104 exit($dir.' is not exists!Please check your input!');
105 }
106 if(!file_exists($des)){
107 mkdir($des);
108 }
109 $dir = rtrim(str_replace("\\","/",$dir),'/');
110 if(strrpos($dir,'/')){
111 $subdir = substr($dir,strrpos($dir,'/')+1);
112 }else{
113 $subdir = $dir;
114 }
115 $dessub = rtrim($des).'/'.$subdir.'/';
116 $dir = $dir.'/';
117 if(!file_exists($dessub)){
118 mkdir($dessub);
119 }
120 $dh = opendir($dir);
121 readdir($dh);
122 readdir($dh);
123 while($fileName = readdir($dh)){
124 $newFileName = $dir.$fileName;
125 if(is_file($newFileName)){
126 if(copy($newFileName,$dessub.$fileName)){
127 echo $newFileName.'已经拷贝完成!<br />';
128 }
129 }
130 if(is_dir($newFileName)){
131 copy_dir($newFileName,$dessub);
132 }
133 }
134 closedir($dh);
135 }