Page 1 sur 1

compter le nombre de fichier d'un répertoire

Posté : 04 nov. 2012, 17:31
par bostak
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,

Re: compter le nombre de fichier d'un répertoire

Posté : 04 nov. 2012, 19:55
par xTG
$dir_underdata = $this->informationsFolder($dir."/".$var, false);
$numberFiles += $dir_underdata;
Te manques juste une addition. ;)

Re: compter le nombre de fichier d'un répertoire

Posté : 04 nov. 2012, 20:13
par AB
Ou sinon y'a plus simple et plus rapide :
$dossier='mon_répertoire';
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dossier));
echo iterator_count($files);

Re: compter le nombre de fichier d'un répertoire

Posté : 04 nov. 2012, 20:17
par schim59
Ou tu comptes sur tes doigts.

Bon ok je sort.

Re: compter le nombre de fichier d'un répertoire

Posté : 04 nov. 2012, 20:36
par bostak
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,

Re: compter le nombre de fichier d'un répertoire

Posté : 04 nov. 2012, 21:13
par 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.
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 :)

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

Posté : 04 nov. 2012, 21:58
par bostak
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 !

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

Posté : 05 nov. 2012, 01:52
par AB
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.

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

Posté : 29 oct. 2014, 12:11
par JJ2014
<?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"; }
?>

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

Posté : 29 oct. 2014, 12:12
par JJ2014
<?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"; }
?>

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

Posté : 29 oct. 2014, 15:35
par xTG
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.