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
4 Réponses :
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>
Essayez ceci:
int fileCount = Directory.EnumerateFiles(path, "*.*", SearchOption.AllDirectories).Count(); int subDirCount = Directory.EnumerateDirectories(path, SearchOption.AllDirectories).Count(); int total = fileCount + subDirCount;
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 :)
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();
Dupliquer: Comptage du nombre de fichiers dans un dossier en c #
Solution: int fileCount = Directory.GetFiles (@ "c: \ MyDir \", "*. *", SearchOption.AllDirectories) .Length;
Regardez MSDN pour
System.IO.Directoryet vous trouverez toutes sortes de fonctions utilesDouble possible de Comment énumérer les fichiers avec tous les sous-répertoires avec C # DirectoryInfo ?