C # Meilleur moyen d'obtenir la profondeur de dossier pour un chemin donné?
Je travaille sur quelque chose qui requiert de la traversée par le biais du système de fichiers et pour tout chemin, j'ai besoin de savoir comment "profond" je suis dans la structure de dossiers. Voici ce que j'utilise actuellement:
int folderDepth = 0;
string tmpPath = startPath;
while (Directory.GetParent(tmpPath) != null) {
folderDepth++;
tmpPath = Directory.GetParent(tmpPath).FullName;
}
return folderDepth;
Cela fonctionne, mais je pense qu'il y a de mieux et de plus rapide? Bien obligé pour tous vos commentaires.
source d'informationauteur AR.
Vous devez vous connecter pour publier un commentaire.
Sur le dessus de ma tête:
Je suis plus qu'en retard sur ce sujet, mais je voulais faire remarquer Paul Sonier la réponse est sans doute le plus court, mais devrait être:
Je suis toujours un fan de la récursivité des solutions. Inefficace, mais amusant!
J'aime le Lisp code écrit en C#!
Voici une autre version récursive que j'aime encore mieux, et est probablement plus efficace:
De bons moments, de bons moments...
En supposant que votre chemin a déjà été validée pour être valables, dans .NET 3.5, vous pouvez également utiliser LINQ to de le faire en 1 ligne de code...
Si vous utilisez les membres de la
Path
de classe, vous pouvez faire face à des localisations de la voie caractère de séparation et d'autres relatives au chemin des mises en garde. Le code suivant donne la profondeur (y compris la racine). Ce n'est pas robuste à de mauvaises cordes et, mais c'est un début pour vous.