Maison > développement back-end > tutoriel php > Explication détaillée de la façon de supprimer un dossier spécifié en PHP

Explication détaillée de la façon de supprimer un dossier spécifié en PHP

小云云
Libérer: 2023-03-19 20:06:02
original
2225 Les gens l'ont consulté

Cet article vous apporte principalement un exemple de comment supprimer un dossier spécifié en PHP. L'éditeur pense que c'est plutôt bien, alors je vais le partager avec vous maintenant et le donner comme référence. Suivons l'éditeur pour y jeter un œil, j'espère que cela pourra aider tout le monde.

1. Avant-propos

Objectif : PHP supprime un répertoire spécifié

Fonctions PHP utilisées : is_dir, opendir, readdir, scandir, rmdir , closeir, etc. (Remarque : d'autres fonctions d'exploitation de fichiers peuvent également être complétées, seules les fonctions utilisées cette fois sont répertoriées ici)

2 Introduction aux fonctions associées

La méthode d'exploitation des fichiers PHP est en gros. le même , a été introduit dans l'article précédent, je ne le répéterai donc pas ici, je vais introduire ici une nouvelle fonction

rmdir

Pour plus de détails. , reportez-vous à : http://www.w3school.com.cn/php/func_filesystem_rmdir.asp

3. 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");
 }
}
Copier après la connexion
/**
 * [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);//删除空目录 
}
Copier après la connexion

Cependant, lorsque le code ci-dessus rencontre un niveau de sous-répertoire élevé, il est facile qu'un avertissement apparaisse, empêchant la suppression du répertoire

Par conséquent, pour les sous-ensembles de haut niveau, un jugement en boucle est nécessaire à ajouter à la fin 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");  
 }
}
Copier après la connexion

L'ajout de ce calque peut éviter la situation d'impossibilité de supprimer (parfois l'impossibilité de supprimer est un problème d'autorisations)

4. Conclusion

Supprimer un répertoire Relativement simple, les étapes de base sont :

1 Déterminez s'il s'agit d'un répertoire, appelez-vous de manière récursive. , sinon supprimez le fichier directement ;

2. Déterminez si le répertoire est vide ou non. rmdir générera une erreur

3.

Recommandations associées :

PHP implémente l'effacement par lots et la suppression des éléments spécifiés. Explication détaillée sur la façon d'accéder à tout le contenu d'un dossier

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal