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