c# - tiempo - se deja caer una piedra en un pozo y al cabo de 10 s se oye el choque contra el fondo




C#¿La mejor forma de obtener la profundidad de la carpeta para una ruta determinada? (4)

La parte superior de mi cabeza:

Directory.GetFullPath().Split("\\").Length;

Estoy trabajando en algo que requiere atravesar el sistema de archivos y para cualquier ruta determinada, necesito saber qué tan "profundo" estoy en la estructura de carpetas. Esto es lo que estoy usando actualmente:

    int folderDepth = 0;
    string tmpPath = startPath;
    while (Directory.GetParent(tmpPath) != null) {
        folderDepth++;
        tmpPath = Directory.GetParent(tmpPath).FullName;
    }
    return folderDepth;

Esto funciona, pero sospecho que hay una forma mejor / más rápida? Muy agradecido por cualquier comentario.


Si usa los miembros de la clase Path , puede hacer frente a las localizaciones del carácter de separación de ruta y otras advertencias relacionadas con la ruta. El siguiente código proporciona la profundidad (incluida la raíz). No es robusto para las cuerdas malas y tal, pero es un comienzo para ti.

        int depth = 0;
        do
        {
            path = Path.GetDirectoryName(path);
            Console.WriteLine(path);
            ++depth;
        } while (!string.IsNullOrEmpty(path));

        Console.WriteLine("Depth = " + depth.ToString());

Suponiendo que su ruta de acceso ya ha sido verificada por ser válida, en .NET 3.5 también podría usar LINQ para hacerlo en 1 línea de código ...

Console.WriteLine (@ "C: \ Folder1 \ Folder2 \ Folder3 \ Folder4 \ MyFile.txt" .Where (c => c = @ "\"). Count);


Estoy más que tarde en esto, pero quería señalar que la respuesta de Paul Sonier es probablemente la más corta, pero debería ser:

 Path.GetFullPath(tmpPath).Split(Path.DirectorySeparatorChar).Length;




folders