Vérifier si un dossier est vide

  • seularts
  • Graduate
  • Graduate
  • Avatar de l’utilisateur
  • Inscription: Jan 02, 2007
  • Messages: 147
  • Loc: Romania
  • Status: Offline

Message Avril 21st, 2010, 1:20 pm

Comment puis-je vérifier en PHP si un dossier est vide ou pas!?
  • Anonymous
  • Bot
  • No Avatar
  • Inscription: 25 Feb 2008
  • Messages: ?
  • Loc: Ozzuland
  • Status: Online

Message Avril 21st, 2010, 1:20 pm

  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Inscription: Fév 10, 2004
  • Messages: 13455
  • Loc: Florida
  • Status: Offline

Message Avril 22nd, 2010, 2:49 am

Ma première pensée est présente.

PHP Code: [ Select ]
$is_empty = (bool) (count(scandir($folder)) == 2);


Si je crée un dossier et d'exécuter cela, il me dit que le dossier est vide. Si je mets un fichier, un dossier ou un lien symbolique dans le dossier, puis exécutez-Im dit le dossier n'est pas vide.

Elle le fait parce scandir reviendra point (dossier en cours) et point-point (pare pas du dossier) par eux-mêmes si le dossier est vide. Donc, si le nombre de résultats retournés à partir scandir est de deux, le dossier doit être vide.

-

Il semble assez inefficace pour rassembler toute la liste des fichiers d'un dossier pour le compte lorsque nous voulons juste savoir si un dossier est vide si. Surtout quand on pense que les sortes scandir cette liste avant de la renvoyer.

Une autre façon serait d'utiliser opendir readdir et.

PHP Code: [ Select ]
$dh = opendir($directory);
for($i = 3; $i; $i--)
{
   $is_empty = (bool) (readdir($dh) === FALSE);
}
closedir($dh);
  1. $dh = opendir($directory);
  2. for($i = 3; $i; $i--)
  3. {
  4.    $is_empty = (bool) (readdir($dh) === FALSE);
  5. }
  6. closedir($dh);


L'idée derrière cela est que les deux premiers résultats retournés par readdir seront point et point-point. Si on saute devant eux, et reçoivent autre chose qu'un booléen faux, nous savons immédiatement le répertoire n'est pas vide. Si ont reçu le faux, nous savons de son vide. Dans les deux cas theres aucun besoin de chercher plus loin dans le répertoire et nous pouvons le fermer et de passer. readdir, à l'exception du point et point-point étant toujours au début theyre spéciale parce que par défaut, sera de retour les choses comme theyre trouvé sur le système de fichiers, il ne trie pas quelque chose de semblable ne scandir.
Strong with this one, the sudo is.

Afficher de l'information

  • Total des messages de ce sujet: 2 messages
  • Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 263 invités
  • Vous ne pouvez pas poster de nouveaux sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas éditer vos messages
  • Vous ne pouvez pas supprimer vos messages
  • Vous ne pouvez pas joindre des fichiers
 
 

© 2011 Unmelted, LLC. Ozzu® est une marque déposée de Unmelted, LLC