首页 > php文件操作 > PHP unlink与rmdir删除目录及目录下所有文件

PHP unlink与rmdir删除目录及目录下所有文件

在php中删除文件与目录其实很简单只要两个函数一个是unlink一个rmdir函数,如果要实现删除目录及目录下的文件我们需要利用递归来操作.

函数代码:仅删除指定目录下的文件,不删除目录文件夹,代码如下:

<?php
class shanchu {
    //循环目录下的所有文件
    function delFileUnderDir($dirName = "../Smarty/templates/templates_c") {
        if ($handle = opendir("$dirName")) {
            while (false !== ($item = readdir($handle))) {
                if ($item != "." && $item != "..") {
                    if (is_dir("$dirName/$item")) {
                        delFileUnderDir("$dirName/$item");
                    } else { //开源代码phprm.com
                        if (unlink("$dirName/$item")) echo "成功删除文件: $dirName/$item<br />n";
                    }
                }
            }
            closedir($handle);
        }
    }
}
?>

假设需要删除一个名叫"upload"目录下的所有文件,但无需删除目录文件夹,你可以通过以下代码完成:

<?php
delFileUnderDir('upload'); 
?>

php删除所有目录,代码如下:

<?php
function deltree($pathdir) {
    echo $pathdir; //调试时用的
    if (is_empty_dir($pathdir)) //如果是空的
    {
        rmdir($pathdir); //直接删除
        
    } else { //否则读这个目录,除了.和..外
        $d = dir($pathdir);
        while ($a = $d->read()) {
            if (is_file($pathdir . '/' . $a) && ($a != '.') && ($a != '..')) {
                unlink($pathdir . '/' . $a);
            }
            //如果是文件就直接删除
            if (is_dir($pathdir . '/' . $a) && ($a != '.') && ($a != '..')) { //如果是目录
                if (!is_empty_dir($pathdir . '/' . $a)) //是否为空
                { //如果不是,调用自身,不过是原来的路径+他下级的目录名
                    deltree($pathdir . '/' . $a);
                }
                if (is_empty_dir($pathdir . '/' . $a)) { //如果是空就直接删除
                    rmdir($pathdir . '/' . $a);
                }
            }
        }
        $d->close();
        echo "必须先删除目录下的所有文件"; //我调试时用的
        
    }
}
function is_empty_dir($pathdir) {
    //判断目录是否为空
    $d = opendir($pathdir);
    $i = 0;
    while ($a = readdir($d)) {
        $i++;
    }
    closedir($d);
    if ($i > 2) {
        return false;
    } else return true;
}
?>

PHP删除目录及目录下所有文件,代码如下:

<?php
//循环删除目录和文件函数
function delDirAndFile($dirName) {
    if ($handle = opendir("$dirName")) {
        while (false !== ($item = readdir($handle))) {
            if ($item != "." && $item != "..") {
                if (is_dir("$dirName/$item")) {
                    delDirAndFile("$dirName/$item");
                } else {
                    if (unlink("$dirName/$item")) echo "成功删除文件: $dirName/$item<br />n";
                }
            }
        }
        closedir($handle);
        if (rmdir($dirName)) echo "成功删除目录: $dirName<br />n";
    }
}
//假设需要删除一个名叫"upload"的同级目录即此目录下的所有文件,你可以通过以下代码完成:
delDirAndFile('upload');
?>


本文地址:http://www.phprm.com/wenjian/fs4933.html

转载随意,但请附上文章地址:-)

标签:rmdir删除目录 rmdir删除文件

发表留言