Home Backend Development PHP Problem How to delete a directory in PHP (detailed example)

How to delete a directory in PHP (detailed example)

Nov 02, 2021 pm 04:31 PM
php File processing Directory processing

在之前的文章《PHP中怎样创建目录(总结分享)》中详细的介绍了PHP中创建目录的相关知识,本篇我们继续来看一下PHP中的目录处理,其中关于删除目录的相关知识,希望对大家有帮助!

How to delete a directory in PHP (detailed example)

在上一篇文章中我们讲到了PHP中可以通过mkdir()函数来实现创建一个目录的目的,既然有创建一个目录那就肯定有删除一个目录。PHP中有特定的函数用来删除目录,这个特定的函数就是rmdir()函数。接下来我们一起来看一下rmdir()函数的用法吧。

<strong><span style="font-size: 20px;">rmdir()</span></strong>函数删除空目录

在我们的日常使用中,就会经常遇到需要进行删除文件的操作,在PHP中想要删除目录也是非常简单的,通过PHP中的rmdir函数就能够实现,接下来我们看一下rmdir()函数的额基本语法格式:

rmdir(string $dirname[, resource $context])
Copy after login

其中需要注意的是:

使用rmdir()函数来进行删除目录的操作,有一个前提,那就是这个需要删除的目录一定要是的,如果删除的目录不是空的话可能会返回一个错误。参数$dirname表示的是要删除的目录路径,参数$context是用来规定文件句柄的环境的,是一个可选参数。

接下来我们通过示例来看一下通过rmdir()函数来进行删除目录,示例如下:

<?php
    $dir = &#39;./test/demo&#39;;
    //判断文件是否存在
    if(is_dir($dir)){
        if(rmdir($dir)) echo &#39;目录删除成功&#39;;
    }else{
        echo "目录不存在";
    }
?>
Copy after login

接着我们在上文中举到的例子,我们创建了一个在该文件同级目录下名为test的目录,并且test内还有一个名为demo的目录,上述示例中便是想要通过rmdir函数来删除名为demo的目录,其中需要注意的是,这个名为demo的目录是空的目录,所以输出结果:

How to delete a directory in PHP (detailed example)

How to delete a directory in PHP (detailed example)

已经成功的删除了这个名为demo的空目录,我们已经实现了能够删除目录,但是这个目录只是空的目录,如果这个目录不是空的,会出现什么结果呢?在我们的日常使用中,一般想要删除一个文件夹直接就能欧删除了,可是要是通过PHP的话还只能删除空的目录,要是想要删除一个大目录那岂不是特别的麻烦。

接下来我们就来看一下如果这个目录不是空的,输出结果会有什么变化,我们将上述示例中的$dir = &#39;./test/demo&#39;;一个空的目录换为一个不是空的目录,来看一下会有什么变化,示例如下:

<?php
    $dir = &#39;C:\Users\Administrator\Desktop\1.0&#39;;
    //判断文件是否存在
    if(is_dir($dir)){
        if(rmdir($dir)) echo &#39;目录删除成功&#39;;
    }else{
        echo "目录不存在";
    }
?>
Copy after login

输出结果:

How to delete a directory in PHP (detailed example)

由上述示例我们能够发现,通过rmdir()函数来进行删除不是空的目录不行,程序会报错。这样的话我们怎样才能够实现删除一个不为空的目录呢?

<strong><span style="max-width:90%">rmdir()</span></strong>函数删除非空目录

上文章我们讲到了rmdir只能够删除空目录,面对非空目录我们也并非束手无策。先理清思路逐个击破。

首先我们需要进入到目录中将目录中的每一个文件都删除掉,这时候我们需要使用unlink()函数,当这里面的文件都删除了这不就是一个空目录了嘛,在使用rmdir()函数删除就好了。

但是,有些时候目录中并不全是文件,目录中也有目录,而这个二阶目录内可能也会存在文件或者又一个目录,这时候想要删除掉这个非空目录就需要用到递归的方法了。

思路整理好了之后就可以想一想可能会用到的函数:

首先我们还是得需要file_exists函数来判断是否是目录,然后我们再通过readdir()函数来以数组的形式获取目录内的所有文件名,如果返回的结果数量超过两个说明当前目录不为空,其中就会用到if语句。

下面我们通过示例来看一下怎样实现删除一个非空目录,示例如下:

<?php
function delDir($directory) { // 自定义函数递归的函数整个目录
    if (file_exists($directory)) { // 判断目录是否存在,如果不存在rmdir()函数会出错
        if ($dir_handle = @opendir($directory)) { // 打开目录返回目录资源,并判断是否成功
            while ($filename = readdir($dir_handle)) { // 遍历目录,读出目录中的文件或文件夹
                if ($filename != &#39;.&#39; && $filename != &#39;..&#39;) { // 一定要排除两个特殊的目录
                    $subFile = $directory . "/" . $filename; //将目录下的文件与当前目录相连
                    // echo $subFile . "<br>";
                    if (is_dir($subFile)) { // 如果是目录条件则成了
                        delDir($subFile); //递归调用自己删除子目录
                    } 
                    if (is_file($subFile)) { // 如果是文件条件则成立
                        unlink($subFile); //直接删除这个文件
                    } 
                } 
            } 
            closedir($dir_handle); //关闭目录资源
            rmdir($directory); //删除空目录
        } 
    } 
} 
delDir("./test"); //调用delDir函数
?>
Copy after login

上述示例中显示通过file_exists来判断目录是否存在,然后遍历目录独处目录中的文件或者文件夹,这时候需要排除通过readdir返回的特殊的目录,接上来就是按着上文中的想法进行各个击破。

In the example, you want to delete a directory named "test" in the same directory as this file.

How to delete a directory in PHP (detailed example)

After running the program:

How to delete a directory in PHP (detailed example)

From this we have completed the operation of deleting a non-empty directory through the rmdir() function.

If you are interested, you can click on "PHP Video Tutorial" to learn more about PHP knowledge.

The above is the detailed content of How to delete a directory in PHP (detailed example). For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

7 PHP Functions I Regret I Didn't Know Before 7 PHP Functions I Regret I Didn't Know Before Nov 13, 2024 am 09:42 AM

If you are an experienced PHP developer, you might have the feeling that you’ve been there and done that already.You have developed a significant number of applications, debugged millions of lines of code, and tweaked a bunch of scripts to achieve op

How To Set Up Visual Studio Code (VS Code) for PHP Development How To Set Up Visual Studio Code (VS Code) for PHP Development Dec 20, 2024 am 11:31 AM

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Apr 05, 2025 am 12:04 AM

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

How do you parse and process HTML/XML in PHP? How do you parse and process HTML/XML in PHP? Feb 07, 2025 am 11:57 AM

This tutorial demonstrates how to efficiently process XML documents using PHP. XML (eXtensible Markup Language) is a versatile text-based markup language designed for both human readability and machine parsing. It's commonly used for data storage an

PHP Program to Count Vowels in a String PHP Program to Count Vowels in a String Feb 07, 2025 pm 12:12 PM

A string is a sequence of characters, including letters, numbers, and symbols. This tutorial will learn how to calculate the number of vowels in a given string in PHP using different methods. The vowels in English are a, e, i, o, u, and they can be uppercase or lowercase. What is a vowel? Vowels are alphabetic characters that represent a specific pronunciation. There are five vowels in English, including uppercase and lowercase: a, e, i, o, u Example 1 Input: String = "Tutorialspoint" Output: 6 explain The vowels in the string "Tutorialspoint" are u, o, i, a, o, i. There are 6 yuan in total

Explain late static binding in PHP (static::). Explain late static binding in PHP (static::). Apr 03, 2025 am 12:04 AM

Static binding (static::) implements late static binding (LSB) in PHP, allowing calling classes to be referenced in static contexts rather than defining classes. 1) The parsing process is performed at runtime, 2) Look up the call class in the inheritance relationship, 3) It may bring performance overhead.

What are PHP magic methods (__construct, __destruct, __call, __get, __set, etc.) and provide use cases? What are PHP magic methods (__construct, __destruct, __call, __get, __set, etc.) and provide use cases? Apr 03, 2025 am 12:03 AM

What are the magic methods of PHP? PHP's magic methods include: 1.\_\_construct, used to initialize objects; 2.\_\_destruct, used to clean up resources; 3.\_\_call, handle non-existent method calls; 4.\_\_get, implement dynamic attribute access; 5.\_\_set, implement dynamic attribute settings. These methods are automatically called in certain situations, improving code flexibility and efficiency.

See all articles