递归遍历和删除目录

递归遍历和删除目录

在踩过递归删除文件夹的坑(删了好多东西啊!!!)之后,本人总结了一下采用递归遍历目录和递归删除目录。
“坑”的来历:在遍历目录时,里面会有 ‘.’ 和 ‘..’ 两个目录, 分别指向上一级和再上一级的目录,这两个不能删除, 是指针, 在windows下看不见, 删除文件时, 必须过滤掉这两个, 否则向上找文件删除会删除所有文件 。我就是踩了这个坑,差点毁掉电脑上的文件,因此果断记下来,提醒自己和大家不要忘记这两个目录。

递归遍历目录

直接上代码比较好

function recursive($dirname){
    // 打开目录,返回句柄
    $handle = opendir($dirname);
    // 循环读取条目
    echo "<ul>";
    while($line = readdir($handle)){
        // 如果是‘.’或者'..',则继续
        if($line == '.' || $line == '..')
            continue;
        echo "<li>" . iconv("gbk","utf-8",$line) . "</li>";
        // 如果是目录,则递归调用
        if(is_dir($dirname ."/". $line)){
            recursive($dirname ."/". $line);
        }
    }
    echo "</ul>";
    // 关闭目录
    closedir($handle);
}
递归删除目录
function delAll($dirname)
{
    // 打开目录
    $handle = opendir($dirname);
    // 循环读取目录中的所有条目
    while ($line = readdir($handle)) {
        if($line == '.' || $line == '..') continue;
        // 判断当前文件是否是目录
        if(is_dir($dirname . "/" . $line)){
            delAll($dirname . "/" . $line);
        }else{
            // 如果是文件,使用unlink文件删除
            unlink($dirname . "/" . $line);
        }
    }
    // 关闭目录
    closedir($handle);
    // 删除目录,关闭目录才可以删除目录
    rmdir($dirname);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值