Compter les fichiers d'un répertoire incluant ses sous-rép.
Posté : 30 juil. 2005, 18:06
Bonjour à tous,
J'utilise depuis plus d'un an un script que j'ai bidouillé pour compter les fichiers d'un répertoire donné incluant ceux de ses sous-répertoires. Sauf que je viens de me rendre compte qu'il incluait dans le comptage les sous-répertoires aussi! Je m'explique:
Si le rép. X contient 2 fichiers et un sous rép. X-1 qui ne contient qu'un seul fichier, le compte est de 5 (2 rép. + 3 fichiers), alors qu'il devrait être 3 (fichiers seulement).
Quelles modif. dois-je apporter pour qu'il ne compte que les fichiers? Merci d'avance.
J'utilise depuis plus d'un an un script que j'ai bidouillé pour compter les fichiers d'un répertoire donné incluant ceux de ses sous-répertoires. Sauf que je viens de me rendre compte qu'il incluait dans le comptage les sous-répertoires aussi! Je m'explique:
Si le rép. X contient 2 fichiers et un sous rép. X-1 qui ne contient qu'un seul fichier, le compte est de 5 (2 rép. + 3 fichiers), alors qu'il devrait être 3 (fichiers seulement).
Quelles modif. dois-je apporter pour qu'il ne compte que les fichiers? Merci d'avance.
/*
* Compte les fichiers d'un répertoire. Compte les fichiers des sous-répertoires si le 2ème paramètre est à "true".
* @param string $sFolderPath Path to directory.
* @param boolean $bCountSubfolders Si à "true" comptera les fichiers dans les sous-rep. aussi.
* @return integer - Nombre de fichiers dans un répertoire.
* True ets mis par défaut
*/
function countFilesInDirectory( $sDirectoryPath, $bCountSubdirectories = true )
{
$iFiles = 0;
if ( is_dir( $sDirectoryPath ) === false )
{
return $iFiles;
}
$sDirectoryPath = $sDirectoryPath[ strlen( $sDirectoryPath ) - 1 ] === '/' ? $sDirectoryPath : $sDirectoryPath . '/';
$Dir = dir( $sDirectoryPath );
$Dir->read();
$Dir->read();
while ( false !== ( $sEntry = $Dir->read() ) )
{
if ( is_dir( $sDirectoryPath . $sEntry ) === false )
{
$iFiles++;
}
else if ( $bCountSubdirectories === true )
{
$iFiles += countFilesInDirectory( $sDirectoryPath . $sEntry, $bCountSubdirectories );
}
}
return $iFiles;
}
Exemple d'utilisation:
print "Nombre de fichiers dans <b>images</b> incluant ses sous-répertoires: " . countFilesInDirectory('images/', true );