scandir

定义和用法

scandir() 函数返回一个数组,其中包含指定路径中的文件和目录。

若成功,则返回一个数组,若失败,则返回 false。如果 directory 不是目录,则返回布尔值 false 并生成一条 E_WARNING 级的错误。

语法

scandir(directory,sort,context)
参数描述
directory 必需。规定要扫描的目录。
sort 可选。规定排列顺序。默认是 0 (升序)。如果是 1,则为降序。
context 可选。规定目录句柄的环境。context 是可修改目录流的行为的一套选项。

例子

<?php
print_r(scandir("images"));
?> 

  

输出:

Array
(
[0] => .
[1] => ..
[2] => dog.jpg
[3] => house.jpg
[4] => logo.gif
)

  

php 删除空目录及空子目录

步骤:

1.遍历目录及子目录

2.使用 scandir 判断目录是否为空,为空则使用rmdir 删除。

 

[php]
 
<?php  
/** 删除所有空目录 
* @param String $path 目录路径 
*/  
function rm_empty_dir($path){  
    if(is_dir($path) && ($handle = opendir($path))!==false){  
        while(($file=readdir($handle))!==false){     // 遍历文件夹  
            if($file!='.' && $file!='..'){  
                $curfile = $path.'/'.$file;          // 当前目录  
                if(is_dir($curfile)){                // 目录  
                    rm_empty_dir($curfile);          // 如果是目录则继续遍历  
                    if(count(scandir($curfile))==2){ // 目录为空,=2是因为. 和 ..存在  
                        rmdir($curfile);             // 删除空目录  
                    }  
                }  
            }  
        }  
        closedir($handle);  
    }  
}  
  
$folder = '目标文件夹';  
  
rm_empty_dir($folder);  
?>  

  

使用 shell 则简单很多:

 

[plain]
 find 目标文件夹 -mindepth 1 -depth -empty -type d -exec rm -r {} \; 
posted @ 2015-09-01 15:43  bodhicitta  阅读(528)  评论(0编辑  收藏  举报