首頁 >後端開發 >PHP問題 >php檔案操作之去除給定路徑的檔案或目錄

php檔案操作之去除給定路徑的檔案或目錄

青灯夜游
青灯夜游原創
2021-08-23 15:36:573043瀏覽

在先前的文章《php檔案操作之提取檔案/目錄的名稱》中,我們了解了取得檔案/目錄的名稱部分的方法。這次我們繼續php檔案操作系列的學習,來聊聊怎麼刪除指定檔案或目錄,有興趣的朋友可以學習了解一下~

在對檔案/目錄進行操作時,不僅可以對檔案中的資料進行操作,也可以對檔案/目錄本身進行操作(例如刪除檔案/目錄)。今天我們就來跟大家介紹一下刪除指定檔案或目錄的方法。

一:刪除指定檔案操作

刪除檔案可以使用unlink($filename,$context)函數,它可以刪除指定的檔案$filename,可選參數$context用於規定檔案句柄的環境。如果執行成功時傳回 TRUE,則失敗時傳回 FALSE。

下面透過具體程式碼範例來看看:

範例1:刪除同目錄下的「test.txt」檔案

php檔案操作之去除給定路徑的檔案或目錄

#
<?php
header("content-type:text/html;charset=utf-8");
$file = &#39;test.txt&#39;;
if(file_exists($file)){
    if(unlink($file)){
        echo $file.&#39; 删除成功!&#39;;
    }else{
        echo $file.&#39; 删除失败!&#39;;
    }
}else{
    echo $file.&#39; 不存在!&#39;;
}
?>

輸出結果為:

php檔案操作之去除給定路徑的檔案或目錄

在重新開啟目錄,看看文件,會發現「test.txt」檔案已經不存在了。

php檔案操作之去除給定路徑的檔案或目錄

範例2:刪除D:\demo目錄下的「text.txt」檔案

php檔案操作之去除給定路徑的檔案或目錄

<?php
header("content-type:text/html;charset=utf-8");
$file = &#39;D:/demo/text.txt&#39;;
if(file_exists($file)){
    if(unlink($file)){
        echo $file.&#39; 删除成功!&#39;;
    }else{
        echo $file.&#39; 删除失败!&#39;;
    }
}else{
    echo $file.&#39; 不存在!&#39;;
}
?>

輸出結果為:

php檔案操作之去除給定路徑的檔案或目錄

在重新開啟目錄,看看文件,會發現「text.txt」文件已經不存在了。

php檔案操作之去除給定路徑的檔案或目錄

如何想要刪除一個目錄中的全部文件,可以利用循環和readdir()來取得D:\demo目錄下的全部文件和目錄(不包含子目錄),然後將其中的文件全部刪除:

<?php
header("content-type:text/html;charset=utf-8");
$dir = &#39;D:/demo&#39;;
if (is_dir($dir)) {
	$info = opendir($dir);
	while (($file = readdir($info)) !== false) {//用不全等于是区分如果文件夹名字为0的时候,那么0!==false,仍然可以遍历
		if ($file != "." && $file != ".." ) {
			$path = $dir . &#39;/&#39; . $file;
			if(is_dir($path)){
				continue;
			}
			unlink($path);
		}
	}
	echo &#39;文件删除成功!&#39;;
	closedir($info);
} 
?>

輸出結果為:

php檔案操作之去除給定路徑的檔案或目錄

#在重新開啟目錄,看看文件,會發現只剩下一個「img」資料夾還存在了。

php檔案操作之去除給定路徑的檔案或目錄

二:刪除指定目錄操作

#刪除目錄可以使用rmdir($dir ,$context)函數,$context是一個可省略的參數,用來規定檔案句柄的環境。如果執行成功時傳回 TRUE,則失敗時傳回 FALSE。

要注意的是:使用 rmdir() 函數刪除指定目錄時,這個目錄必須是空的,而且要有對應的權限。如果刪除一個不為空的目錄也會產生一個 E_WERNING 等級的錯誤。

下面透過具體程式碼範例來看看:刪除D:\demo目錄下的空目錄「img」

<?php
	header("content-type:text/html;charset=utf-8");
    $dir = &#39;D:/demo/img&#39;;
    if(is_dir($dir)){
        if(rmdir($dir)) echo &#39;目录删除成功!&#39;;
    }else{
        echo "目录不存在!";
    }
?>

輸出結果為:

php檔案操作之去除給定路徑的檔案或目錄

在重新開啟目錄,看看文件,會發現空目錄「img」不存在了。

php檔案操作之去除給定路徑的檔案或目錄

但大部分情況下,我們需要刪除的目錄並不為空,裡面又會包含很多子檔案和子目錄,這要怎麼操作才能刪除指定目錄及其子檔案和目錄呢?

具體實作方法:可以遍歷這個目錄下的所有檔案和資料夾,並用遞歸的方式來逐一刪除這個目錄下的所有檔案和資料夾

下面給出具體的實作程式碼:

<?php
    function deldir($path){
        //如果是目录则继续
        if(is_dir($path)){
            //扫描一个文件夹内的所有文件夹和文件并返回数组
            $p = scandir($path);
            //如果 $p 中有两个以上的元素则说明当前 $path 不为空
            if(count($p)>2){
                foreach($p as $val){
                    //排除目录中的.和..
                    if($val !="." && $val !=".."){
                        //如果是目录则递归子目录,继续操作
                        if(is_dir($path.$val)){
                            //子目录中操作删除文件夹和文件
                            deldir($path.$val.&#39;/&#39;);
                        }else{
                            //如果是文件直接删除
                            unlink($path.$val);
                        }
                    }
                }
            }
        }
        //删除目录
        return rmdir($path);
    }
    //设置需要删除的文件夹
    $path = "D:/demo/";
    //调用函数,传入路径
    deldir($path);
?>

好了就說到這裡了,有其他想知道的,可以點選這個喔。 → →PHP檔案基礎操作

#推薦:PHP面試題大匯總(收藏)》《php影片教學

以上是php檔案操作之去除給定路徑的檔案或目錄的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn