ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
### 一、遍历目录下的文件信息 * * * * * >[info]#### 1. 函数【dir_info】 ~~~ /** * 遍历目录下的文件信息 * @param $dir_name */ function dir_info($dir_name) { $num = 0;//文件数量 $dir_handle = @opendir($dir_name); //将文件信息以表格形式输出 echo "<h1>目录{$dir_name}下面的内容如下</h1>"; echo "<table align='center' border='1px'>"; echo "<tr><th>文件名</th><th>文件大小</th><th>文件类型</th><th>修改时间</th></tr>"; while ($file = readdir($dir_handle)) { $file_name = $dir_name . "/" . $file;//将当前目录下的文件与当前目录连接起来 $bgcolor = $num++ % 2 == 0 ? "#ffffff" : "#cccccc";//隔行显示颜色 echo "<tr bgcolor='$bgcolor'>"; echo "<td>$file</td>"; echo "<td>" . filesize($file_name) . "</td>"; echo "<td>" . filetype($file_name) . "</td>"; echo "<td>" . date("Y/m/d H:i:s", filemtime($file_name)) . "</td>"; echo "</tr>"; } echo "</table>"; closedir($dir_handle); echo "在<b>$dir_name</b>目录下总的子目录和文件总共有<b>$num</b>个"; } ~~~ >[info]#### 2. 测试 - #### 函数使用 ~~~ dir_info("css"); ~~~ ### 二、统计目录大小 * * * * * >[info]#### 1. 函数【dir_size】 ~~~ /** * 统计目录大小 * @param $dir_name */ function dir_size($dir_name) { $dir_size = 0; if ($dir_hander = @opendir($dir_name)) { while ($file = readdir($dir_hander)) { if ($file != '.' && $file != '..') { $sub_file = $dir_name . "/" . $file; if (is_dir($sub_file)) { $dir_size += dir_size($sub_file); } if (is_file($sub_file)) { $dir_size += filesize($sub_file); } } } closedir($dir_hander); return $dir_size; } } ~~~ >[info]#### 2. 测试 - #### 函数使用 ~~~ $dir_size = dir_size("css"); echo round($dir_size / pow(1024, 1), 2) . "KB"; ~~~ ### 三、递归删除目录 * * * * * >[info]#### 1. 递归删除目录【del_dir】 ~~~ /** * 递归删除目录 * @param $directory目录名称 */ function del_dir($directory){ if(file_exists($directory)){ if($dir_hander=@opendir($directory)){ while($file_name=readdir($dir_hander)){ if($file_name!="."&&$file_name!=".."){ $sub_file=$directory."/".$file_name; if(is_dir($sub_file)){ del_dir($sub_file); }if(is_file($sub_file)){ unlink($sub_file); } } } closedir($dir_hander); rmdir($directory);//删除空目录 } } echo "删除成功!"; } ~~~ >[info]#### 2. 测试 - #### 函数使用 ~~~ del_dir("css"); ~~~ ### 四、递归复制目录 * * * * * >[info]#### 1. 递归复制目录【copy_dir】 ~~~ /** * 递归复制目录 * @param $dir_src源目录 * @param $die_to目的目录 */ function copy_dir($dir_src,$dir_to){ if(is_file($dir_to)){ echo "目标不是一个目录!"; return; } if(!file_exists($dir_to)){ mkdir($dir_to); } if(file_exists($dir_src)){ if($dir_haner=@opendir($dir_src)){ while($file_name=readdir($dir_haner)) { if ($file_name != "." && $file_name != "..") { $sub_src_file = $dir_src . "/" . $file_name;//将源目录和多级子目录连接 $sub_to_file = $dir_to . "/" . $file_name;//将目标目录和多级子目录连接 if (is_dir($sub_src_file)) { copy_dir($sub_src_file, $sub_to_file); } if (is_file($sub_src_file)) { copy($sub_src_file, $sub_to_file); } } } closedir($dir_haner); } } else{ echo "找不到该文件!"; return; } echo "复制完毕!"; } ~~~ >[info]#### 2. 测试 - #### 函数使用 ~~~ copy_dir("css","C:/a"); copy_dir("D:/WWW/test/tool","C:/a"); ~~~