Maison > Article > développement back-end > Explication détaillée de la fonction de suppression des dossiers spécifiés en PHP
L'éditeur suivant vous apportera un exemple de suppression d'un dossier spécifié en PHP. L'éditeur le trouve plutôt bon, je vais donc le partager avec vous maintenant et le donner comme référence pour tout le monde. Venez jeter un œil avec l'éditeur
1 Avant-propos
Objectif : PHP supprime un répertoire spécifié
Les fonctions PHP utilisées : is_dir, opendir, readdir, scandir, rmdir, closeir, etc. (Remarque : d'autres fonctions d'opération de fichiers peuvent également être complétées, seules les fonctions utilisées cette fois sont listées ici)2. Introduction aux fonctions associées
La méthode de fonctionnement des fichiers PHP est à peu près la même. Elle a été présentée dans l'article précédent. Je ne répéterai pas l'introduction ici. Ici, je vais en présenter une nouvelle. Fonctionrmdir
Pour plus de détails, veuillez vous référer à : http://www. w3school.com.cn/php/func_filesystem_rmdir.asp3. Composition du code
** * [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);//删除空目录 }Cependant, lorsque le code ci-dessus rencontre un sous-répertoire de haut niveau, un avertissement apparaîtra facilement, empêchant la suppression du répertoire
Par conséquent, pour les sous-ensembles de haut niveau, vous devez enfin ajouter un jugement de boucle pour déterminer s'il peut être supprimé pour éviter cette erreur
// //关掉资源,删除目录 // 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"); } }L'ajout de cette couche peut éviter la situation qui ne peut pas être supprimée (parfois elle ne peut pas être supprimée) (C'est un problème d'autorisation)
4. Conclusion
Supprimer un répertoire est relativement simple, les étapes de base sont : 1. Déterminer s'il s'agit d'un répertoire, appelez-le de manière récursive, sinon supprimez le fichier directement2. Déterminez si le répertoire est vide. S'il n'est pas vide, rmdir générera une erreur 3.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!