### 一、遍歷目錄下的文件信息
* * * * *
>[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");
~~~