Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erklärung, wie man einen bestimmten Ordner in PHP löscht

Detaillierte Erklärung, wie man einen bestimmten Ordner in PHP löscht

小云云
小云云Original
2018-02-01 13:05:402121Durchsuche

Dieser Artikel enthält hauptsächlich ein Beispiel dafür, wie man einen bestimmten Ordner in PHP löscht. Der Herausgeber findet es ziemlich gut, deshalb teile ich es jetzt mit Ihnen und gebe es als Referenz. Folgen wir dem Herausgeber und schauen wir uns das an. Ich hoffe, es kann allen helfen.

1. Vorwort

Ziel: PHP löscht ein angegebenes Verzeichnis

Verwendete PHP-Funktionen: is_dir, opendir, readdir, scandir, rmdir, closeir, usw. (Hinweis: Andere Dateioperationsfunktionen können ebenfalls ausgeführt werden. Hier werden nur die diesmal verwendeten Funktionen aufgeführt.)

2. Einführung in verwandte Funktionen

Die Methode zum Betreiben von PHP-Dateien ist grob Das Gleiche wurde im vorherigen Artikel eingeführt, daher werde ich es hier nicht wiederholen. Hier werde ich eine neue Funktion vorstellen

rmdir

Für Details , siehe: http://www.w3school.com.cn/php/func_filesystem_rmdir.asp

3. Codezusammensetzung

**
 * [delAllFile description] 删除指定目录
 * @param [type] $dirName [description] 目录
 * @param [type] $file [description] 记录的过程文件
 * @param integer $type [description] 第一次默认打开新文件,第二次调用不打开
 * @return [type]   [description]
 */
public function delAllFile($dirName, $file, $type = 1) {
 $re = $this->checkDir($dirName);
 //默认第一次打开文件
 if($type){
 $file = fopen($file, 'w');//打开日志文件
 }
 if($re){
 $this->delFile($dirName, $file);
 }else{
 fwrite($file,"{$dirName}清理完成\r\n");
 }
}
/**
 * [checkDir description] 检测文件夹是否为空,为空直接删除
 * @param [type] $dirName [description] 文件夹名
 * @return [type]   [description]
 */
private function checkDir($dirName) {
 $a = scandir($dirName);//列出 images 目录中的文件和目录:
 //只包含.和..目录的文件夹为空文件夹
 if(sizeof($a) == 2){
 rmdir($dirName);
 return false;
 }
 return true;
}
/**
 * [delFile description] 上传文件的方法
 * @param [type] $dirName [description] 目录
 * @param [type] $file [description] 记录的文件
 * @return [type]   [description]
 */
private function delFile($dirName, $file) {
 $dh = openDir($dirName);
 while($handle = readdir($dh)){
 if($handle == '.' || $handle == '..') {
 continue;
 }
 $resource = $dirName.'/'.$handle;
 //判断是否是文件夹
 if(is_dir($resource)) {
 //判断文件夹是否为空
 $re = $this->checkDir($dirName);
 if($re){
 $this->delAllFile($resource, $file, 0);
 }else{
 fwrite($file,"{$resource}清理完成\r\n");
 continue;
 }
 }else{
 unlink($resource);
 }
 }
 
 //关掉资源,删除目录
 closedir($dh);//关闭目录资源 
 fwrite($file,"{$dirName}清理完成\r\n");
 rmdir($dirName);//删除空目录 
}

Wenn jedoch der obige Code auftritt Bei einer Unterverzeichnisebene auf hoher Ebene kann es leicht zu einer Warnung kommen, die dazu führt, dass das Verzeichnis nicht gelöscht werden kann.

Daher ist für Teilmengen auf hoher Ebene eine Schleifenbeurteilung erforderlich muss am Ende hinzugefügt werden, um festzustellen, ob es gelöscht werden kann, um diesen Fehler zu vermeiden

// //关掉资源,删除目录
// closedir($dh);//关闭目录资源 
// fwrite($file,"{$dirName}清理完成\r\n");
//rmdir($dirName);//删除空目录 
 
//每次目录层级高了就报错,故加个循环处理
$i = 1;
while($i){
 $re = $this->checkDir($dirName);
 echo "$dirName $i 次<br/><hr/>";
 $i++;
 if(!$re){
  $i = 0;
  closedir($dh);//关闭目录资源 
  fwrite($file,"{$dirName}清理完成\r\n");  
 }
}

Durch das Hinzufügen dieser Ebene kann vermieden werden, dass das Löschen nicht möglich ist (manchmal ist die Unfähigkeit zum Löschen ein Berechtigungsproblem).

4. Fazit

Relativ einfach, die grundlegenden Schritte sind:

Bestimmen Sie, ob es sich um ein Verzeichnis handelt, rufen Sie sich selbst auf , andernfalls löschen Sie die Datei direkt;

2. Stellen Sie fest, ob das Verzeichnis leer ist oder nicht.

3.

Verwandte Empfehlungen:

PHP implementiert Batch-Clearing und Löschung bestimmter Dateien. Detaillierte Erklärung, wie auf alle Inhalte eines Ordners zugegriffen werden kann

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung, wie man einen bestimmten Ordner in PHP löscht. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn