Heim >Backend-Entwicklung >PHP-Problem >PHP-Dateioperation: Dateien oder Verzeichnisse in einem bestimmten Pfad entfernen
Im vorherigen Artikel „php-Dateioperation: Extrahieren des Datei-/Verzeichnisnamens“ haben wir die Methode zum Abrufen des Namensteils der Datei/des Verzeichnisses kennengelernt. Dieses Mal setzen wir die PHP-Dateioperationsreihe fort und sprechen darüber, wie man bestimmte Dateien oder Verzeichnisse löscht. ~
Beim Bearbeiten von Dateien/Verzeichnissen können Sie nicht nur die Daten in den Dateien bearbeiten, sondern auch Arbeiten Sie an der Datei/dem Verzeichnis selbst (z. B. Löschen der Datei/des Verzeichnisses). Heute stellen wir Ihnen vor, wie Sie bestimmte Dateien oder Verzeichnisse löschen.
Eins: Vorgang „Angegebene Datei löschen“
Um eine Datei zu löschen, können Sie die Funktion unlink($filename,$context)
verwenden, mit der die angegebene Datei $ gelöscht werden kann filename
wird der optionale Parameter $context
verwendet, um die Umgebung des Dateihandles anzugeben. Gibt TRUE zurück, wenn die Ausführung erfolgreich ist, und FALSE, wenn sie fehlschlägt. unlink($filename,$context)
函数,它可以删除指定的文件$filename
,可选参数$context
用于规定文件句柄的环境。如果执行成功时返回 TRUE,失败时返回 FALSE。
下面通过具体代码示例来看看:
例1:删除同目录下的“test.txt”文件
<?php header("content-type:text/html;charset=utf-8"); $file = 'test.txt'; if(file_exists($file)){ if(unlink($file)){ echo $file.' 删除成功!'; }else{ echo $file.' 删除失败!'; } }else{ echo $file.' 不存在!'; } ?>
输出结果为:
在重新打开目录,看看文件,会发现“test.txt”文件已经不存在了。
例2:删除D:demo目录下的“text.txt”文件
<?php header("content-type:text/html;charset=utf-8"); $file = 'D:/demo/text.txt'; if(file_exists($file)){ if(unlink($file)){ echo $file.' 删除成功!'; }else{ echo $file.' 删除失败!'; } }else{ echo $file.' 不存在!'; } ?>
输出结果为:
在重新打开目录,看看文件,会发现“text.txt”文件已经不存在了。
如何想要删除一个目录中的全部文件,可以利用循环和readdir()获取D:demo目录下的全部文件和目录(不包括子目录),然后将其中的文件全部删除:
<?php header("content-type:text/html;charset=utf-8"); $dir = 'D:/demo'; if (is_dir($dir)) { $info = opendir($dir); while (($file = readdir($info)) !== false) {//用不全等于是区分如果文件夹名字为0的时候,那么0!==false,仍然可以遍历 if ($file != "." && $file != ".." ) { $path = $dir . '/' . $file; if(is_dir($path)){ continue; } unlink($path); } } echo '文件删除成功!'; closedir($info); } ?>
输出结果为:
在重新打开目录,看看文件,会发现只剩下一个“img”文件夹还存在了。
二:删除指定目录操作
删除目录可以使用rmdir($dir,$context)
<?php header("content-type:text/html;charset=utf-8"); $dir = 'D:/demo/img'; if(is_dir($dir)){ if(rmdir($dir)) echo '目录删除成功!'; }else{ echo "目录不存在!"; } ?>Das Ausgabeergebnis ist:
Nachdem Sie das Verzeichnis erneut geöffnet und sich die Datei angesehen haben, werden Sie Folgendes finden: „test.txt“ Die Datei existiert nicht mehr.
Beispiel 2: Löschen Sie die Datei „text.txt“ im D:demo-Verzeichnis<?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.'/'); }else{ //如果是文件直接删除 unlink($path.$val); } } } } } //删除目录 return rmdir($path); } //设置需要删除的文件夹 $path = "D:/demo/"; //调用函数,传入路径 deldir($path); ?>Das Ausgabeergebnis ist: Nachdem Sie das Verzeichnis erneut geöffnet und sich die Dateien angesehen haben, werden Sie feststellen, dass die Datei „text.txt“ nicht mehr existiert. Wie Wenn Sie alle Dateien in einem Verzeichnis löschen möchten, können Sie Schleifen und readdir() verwenden, um alle Dateien und Verzeichnisse im D:demo-Verzeichnis (mit Ausnahme der Unterverzeichnisse) abzurufen und dann alle darin enthaltenen Dateien zu löschen:
rrreee Das Ausgabeergebnis ist: at Öffnen Sie das Verzeichnis erneut und sehen Sie sich die Dateien an. Sie werden feststellen, dass nur noch ein „img“-Ordner vorhanden ist.
🎜🎜🎜 🎜Zwei: Vorgang zum Löschen eines angegebenen Verzeichnisses🎜🎜🎜🎜Um ein Verzeichnis zu löschen, können Sie die Funktionrmdir($dir,$context)
verwenden. $context ist ein weggelassener Parameter, der zur Angabe der Umgebung verwendet wird das Dateihandle. Gibt TRUE zurück, wenn die Ausführung erfolgreich ist, und FALSE, wenn sie fehlschlägt. 🎜🎜Es ist zu beachten, dass bei Verwendung der Funktion rmdir() zum Löschen eines angegebenen Verzeichnisses das Verzeichnis leer sein und über entsprechende Berechtigungen verfügen muss. Das Löschen eines Verzeichnisses, das nicht leer ist, führt ebenfalls zu einem Fehler der Stufe E_WERNING. 🎜🎜Werfen wir einen Blick auf das konkrete Codebeispiel: Löschen Sie das leere Verzeichnis „img“ im Verzeichnis D:demo 🎜rrreee🎜Das Ausgabeergebnis ist: 🎜🎜🎜🎜🎜Nachdem Sie das Verzeichnis erneut geöffnet und sich die Dateien angesehen haben, werden Sie Folgendes tun Finden Sie das leere Verzeichnis „img“ „Existiert nicht mehr. 🎜🎜🎜🎜🎜Aber in den meisten Fällen ist das Verzeichnis, das wir löschen müssen, nicht leer und enthält viele Unterdateien und Unterverzeichnisse. Wie können wir das angegebene Verzeichnis und seine Unterdateien und Verzeichnisse löschen? 🎜🎜🎜Spezifische Implementierungsmethode: Sie können alle Dateien und Ordner in diesem Verzeichnis durchlaufen und alle Dateien und Ordner in diesem Verzeichnis einzeln rekursiv löschen🎜🎜Der spezifische Implementierungscode ist unten angegeben:🎜rrreee🎜Okay, das ist alles Um mehr zu erfahren, klicken Sie hier. → →🎜Grundlegende Bedienung von PHP-Dateien🎜🎜🎜🎜Empfohlen:🎜"🎜Sammlung von PHP-Interviewfragen (Sammlung)🎜" "🎜php-Video-Tutorial🎜"🎜Das obige ist der detaillierte Inhalt vonPHP-Dateioperation: Dateien oder Verzeichnisse in einem bestimmten Pfad entfernen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!