[RESOLU] compter le nombre de fichier d'un répertoire

Eléphant du PHP | 100 Messages

04 nov. 2012, 17:31

Bonjour,

J'aimerais connaître le nombre de fichier total d'un répertoire (incluant donc le nombre de fichier qu'il y a dans les sous dossiers)
Voici mon script :

Code : Tout sélectionner

public function informationsFolder($filename, $bool) { if($bool == true){ $dir= $this->files."/".$filename; } elseif ($bool == false) { $dir= $filename; } $numberFiles=0; if($dir_ressource = opendir($dir)) { while(($var = readdir($dir_ressource)) !== false) { if($var != "." && $var != "..") { if(is_file($dir."/".$var)) { $numberFiles++; } elseif(is_dir($dir."/".$var)) { $dir_underdata = $this->informationsFolder($dir."/".$var, false); } } } closedir($dir_ressource); } return $numberFiles; }
J'ai fais plusieurs essaie mais je dois dire que je coince je n'arrive à retourner que le nombre de dossier du premier niveau.
Merci d'avance de votre aide.

Cordialement,

ViPHP
xTG
ViPHP | 7331 Messages

04 nov. 2012, 19:55

$dir_underdata = $this->informationsFolder($dir."/".$var, false);
$numberFiles += $dir_underdata;
Te manques juste une addition. ;)

ViPHP
AB
ViPHP | 5818 Messages

04 nov. 2012, 20:13

Ou sinon y'a plus simple et plus rapide :
$dossier='mon_répertoire';
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dossier));
echo iterator_count($files);

Eléphant du PHP | 229 Messages

04 nov. 2012, 20:17

Ou tu comptes sur tes doigts.

Bon ok je sort.

Eléphant du PHP | 100 Messages

04 nov. 2012, 20:36

merci beaucoup xtg quel boulet je suis c'est sur que sa marchera beaucoup mieux comme sa.
Et merci beaucoup à toi aussi AB c'est génial ton truc en deux ligne c'est fait et sa fonctionne du tonnerre ! Je connaissais pas du tout et je vais plonger la dedans car moi qui fais de la récursivité sa pourrait bien m'aider.

Merci beaucoup de votre aide rapide et efficace.

Cordialement,

ViPHP
AB
ViPHP | 5818 Messages

04 nov. 2012, 21:13

c'est génial ton truc en deux ligne c'est fait et sa fonctionne du tonnerre ! Je connaissais pas du tout et je vais plonger la dedans car moi qui fais de la récursivité sa pourrait bien m'aider.
Oui c'est les nouveautés de php5...

après si tu veux filtrer certains fichiers (dans l'exemple ci-dessous exclure les .htaccess) tu peux étendre la classe RecursiveFilterIterator
$dossier='mon_repertoire';
$files = new RecursiveIteratorIterator(new Mon_tri_toto(new RecursiveDirectoryIterator($dossier)));


class Mon_tri_toto extends RecursiveFilterIterator {
 
    public function accept() {
		
		return $this->getFilename() != '.htaccess';	
    }
}
echo iterator_count($files);
et pour les cas plus pointus il y a aussi RecursiveRegexIterator :)

Eléphant du PHP | 100 Messages

04 nov. 2012, 21:58

Effectivement très intéressant tout sa, mais je dois te dire que je suis un peu largué niveau compréhension du code. C'est mes début dans la POO en plus et là avec ces fonctionnalités de PHP5 sa me fait mal à la tête !

ViPHP
AB
ViPHP | 5818 Messages

05 nov. 2012, 01:52

Effectivement très intéressant tout sa, mais je dois te dire que je suis un peu largué niveau compréhension du code. C'est mes début dans la POO en plus et là avec ces fonctionnalités de PHP5 sa me fait mal à la tête !
Normal ! faut y aller doucement :wink: ça se comprend pas en cinq minutes surtout pour des débuts.
Mais c'est un bon exercice. Si tu comprends cela tu seras sur la bonne voie pour comprendre les nombreuses classes php5.

JJ2014
Invité n'ayant pas de compte PHPfrance

29 oct. 2014, 12:11

<?php
	$files = glob("contenu/rapportImportCSV/*.*");/* $files pour "lister" les fichiers - Mise en place de *.* pour dire que ce dossier contient une extension (par exemple .jpg, .php, etc... */
	$compteur = count($files);/* Variable $compteur pour compter (count) les fichiers lister ($files) dans le dossier */
	echo "Il y a <font color=#FF0000>$compteur</font>";
	if ($compteur > 1) { echo " fichiers dans ce répertoire"; }
	else { echo " fichier dans ce répertoire"; }
?>

JJ2014
Invité n'ayant pas de compte PHPfrance

29 oct. 2014, 12:12

<?php
	$files = glob("contenu/rapportImportCSV/*.*");/* $files pour "lister" les fichiers - Mise en place de *.* pour dire que ce dossier contient une extension (par exemple .jpg, .php, etc... */
	$compteur = count($files);/* Variable $compteur pour compter (count) les fichiers lister ($files) dans le dossier */
	echo "Il y a <font color=#FF0000>$compteur</font>";
	if ($compteur > 1) { echo " fichiers dans ce répertoire"; }
	else { echo " fichier dans ce répertoire"; }
?>

ViPHP
xTG
ViPHP | 7331 Messages

29 oct. 2014, 15:35

Double post en déterrant un topic vieux d'il y a deux ans pour présenter une demi solution... Chapeau ! ;)

Le but était non pas de compter les fichiers d'un dossier mais aussi de compter ceux des sous-dossiers.