1
votes

Comment compter le nombre de fichiers dans un répertoire ET ses sous-répertoires

Je crée un programme pour compter le nombre de fichiers dans un répertoire et afficher le total si nécessaire. Jusqu'à présent, il peut compter le nombre total de fichiers dans le répertoire mais j'aimerais savoir comment éditer mon code actuel afin qu'il compte également les fichiers dans les sous-répertoires.

Ceci est juste une application c # basique. Je suis sûr qu'il existe un moyen simple de le faire, mais je suis un débutant et je n'arrive pas à trouver le code dont j'ai besoin pour le faire.

 System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo("sourcePath");
        int count = dir.GetFiles().Length;

Les résultats attendus du code sortez bien et affichez le nombre total de fichiers dans le répertoire. J'ai juste besoin de le modifier pour qu'il inclue les sous-répertoires et leurs fichiers

c#

2 commentaires

Regardez MSDN pour System.IO.Directory et vous trouverez toutes sortes de fonctions utiles


Double possible de Comment énumérer les fichiers avec tous les sous-répertoires avec C # DirectoryInfo ?


4 Réponses :


5
votes

Pour un nombre de fichiers, utilisez

var countFiles = System.IO.Directory.GetFiles(sourcePath, "*.*", SearchOption.AllDirectories).Count();

Pour un nombre de répertoires, utilisez

var countDirectories = System.IO.Directory.GetDirectories(sourcePath, "*", SearchOption.AllDirectories).Count();

Ensuite, vous pouvez les ajouter ensemble, si nécessaire.

/ p>


0 commentaires

1
votes

Essayez ceci:

int fileCount = Directory.EnumerateFiles(path, "*.*", SearchOption.AllDirectories).Count();
int subDirCount = Directory.EnumerateDirectories(path, SearchOption.AllDirectories).Count();
int total = fileCount + subDirCount;


2 commentaires

Merci! J'ai utilisé cette méthode et c'est la meilleure que j'ai trouvée. Très appréciée :)


@Joe pas de problème! Bon codage :)



1
votes

Le moyen le plus rapide est d'exécuter un seul EnumerateFileSystemInfos pour le décompte des répertoires et des fichiers car la navigation dans le système de fichiers coûte cher.

var res = new DirectoryInfo(@"sourcePath")
        .EnumerateFileSystemInfos("*", SearchOption.AllDirectories)
        .GroupBy(s => s is DirectoryInfo)
        .ToDictionary(s => s.Key, s => s.Count());

var directoryCount = res.ContainsKey(true) ? res[true] : 0;
var fileCount = res.ContainsKey(false) ? res[false] : 0;

Si vous souhaitez l'obtenir séparément:

var fileAndDirectoriesCount = = new DirectoryInfo(@"sourcePath")
        .EnumerateFileSystemInfos("*", SearchOption.AllDirectories)
        .Count();


0 commentaires

0
votes

Dupliquer: Comptage du nombre de fichiers dans un dossier en c #

Solution: int fileCount = Directory.GetFiles (@ "c: \ MyDir \", "*. *", SearchOption.AllDirectories) .Length;


0 commentaires