如何使用PHP的rmdir函数删除目录

PHP 提供了一个叫做rmdir的函数来删除一个目录。

php中有删除目录的函数吗?”

“rmdir函数怎么用?”

“如何删除非空目录?”

在这篇文章中,我将从基础到高级内容解释如何使用php删除目录。

如何使用rmdir删除目录

在PHP中有一个名为“rmdir”的函数可以删除目录。

rmdir是删除指定目录的函数,是经常使用的函数。

下面,我们来看下rmdir的概要和用法。

如何使用PHP的rmdir函数删除目录

什么是rmdir

如前所述,rmdir 是一个删除目录的 php 函数。

像下面的代码那样编写 rmdir 函数。

将目录名称(目录路径)作为参数传递。

rmdir(目录名);

请注意,如果由于指定的目录不存在而无法删除该目录,则会出现 e_warning 级别的错误。

另外,如果rmdir指定的目录下有文件或其他目录,则rmdir指定的目录不能被删除。

这种情况下,将指定目录清空一次后,用rmdir再次删除该目录。

使用rmdir

现在,我们通过一个示例程序来看下如何使用rmdir。

//创建sample目录
mkdir('sample');
 
// 检查目录是否存在
if (is_dir('sample')) {
    // 确认目录内是否有其他目录或文件
    $files = array_diff(scandir('sample'), array('.','..'));
    if (empty($files)) {
        // 删除目录
        echo "删除sample目录";
        rmdir('sample');
    }
}

在示例程序中,首先使用 mkdir 函数创建一个sample目录。

在真正执行rmdir函数之前,需要检查“指定目录是否存在”和“指定目录是否为空”。

这是因为如果忽略此确认,则执行 rmdir 函数时可能会出现错误。

首先,is_dir('sample')以查看指定目录是否存在。

另外,使用$files = array_diff(scandir('sample'), array('.','..')); 来检查指定目录是否为空。

$files 是示例目录中除“.”和“..”之外的其他目录和文件的数组。如果这个 $files 为空,则执行 rmdir 函数。

上述示例程序的执行结果如下。

从执行结果可以看出sample目录已经被删除。

删除非空目录

如上所述,rmdir 函数不能删除指定目录内的其他目录或文件。

所以,如果要删除一个非空目录,需要删除指定目录下的所有其他目录和文件,然后再用rmdir函数删除。

下面,我准备了一个同样可以删除非空目录的示例代码。

// 递归删除目录的函数
function remove_directory($dir) {
    $files = array_diff(scandir($dir), array('.','..'));
    foreach ($files as $file) {
        // 按文件或目录分开处理
        if (is_dir("$dir/$file")) {
            // 如果是目录,再次调用相同的函数
            remove_directory("$dir/$file");
        } else {
            // 如果是文件就删除
            unlink("$dir/$file");
            echo "文件:" . $dir . "/" . $file . "删除";
        }
    }
    // 删除指定目录
    echo "目录:" . $dir . "删除";
    return rmdir($dir);
}
 
// 创建目录、文件
mkdir('test1');
mkdir('test1/test2');
touch('test1/test2/test3');
 
// 删除非空目录
remove_directory('test1');

在示例程序中,首先定义一个名为 remove_directory 的函数。

这个remove_directory函数检查指定目录的内容,如果没有内容则删除指定目录,如果有内容则根据内容改变处理。

第3行,获取指定目录下的文件(其他目录和文件),第4到14行,如果是文件,使用unlink函数删除每个文件,如果是文件,则再次调用remove_directory函数目录。

最后,在第 17 行,使用 rmdir 函数删除空的指定目录。

第 20-23 行创建一个非空目录。

在第 26 行,我们使用 remove_directory 函数删除非空目录。

上述示例程序的执行结果如下。

文件:test1/test2/test3删除
目录:test1/test2删除
目录:test1删除

如何使用PHP的rmdir函数删除目录

从执行结果可以看出,不为空的目录是可以删除的。

结语

在本文中,我通过示例程序解释了如何使用 rmdir 函数。

rmdir 函数是一个删除空目录的函数。

最后编辑于:2023/03/22作者: 烽烟无限