es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Hay alguna forma de obtener todos los directorios y archivos que coinciden con un patrón con comodines de forma recursiva en C#?

Estoy buscando una biblioteca que me permita tomar algo similar a esto:

./*
./*/*.*
./**
./**/*.*
./*.cs
./folder1/*.png

Luego necesitaría pasar esto a un método que escanea el sistema de archivos y devuelve estas rutas:

C:\folder1, C:\folder2, C:\folder3
C:\folder1\file.cs, C:\folder1\test.dll, [...], C:\folder2\image.png, [...]
C:\folder1, C:\folder1\results, C:\folder2, [...]
C:\file1.cs, C:\file2.cs, C:\file3.cs
C:\folder1\image1.png, C:\folder1\image2.png, [...]

Soy consciente de que existen Directory.GetFiles() y Directory.GetDirectories() y que aceptan un filtro, pero necesito un método que lo haga de forma recursiva y flexible y devuelva un conjunto de rutas absolutas.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para esta solicitud en particular, recomendaría utilizar la popular biblioteca de código abierto llamada “glob”, que se utiliza para comparar rutas de archivos utilizando los patrones que mencionaste anteriormente.

    La implementación en C# de esta biblioteca se llama “glob.cs” y se puede instalar a través de NuGet. Una vez instalado, deberías poder utilizar “glob.cs” para comparar rutas de archivos de forma recursiva, además de procesar los datos devueltos para obtener las rutas absolutas, siguiendo los siguientes pasos:

    1. Instala “glob.cs” desde NuGet.
    2. Utiliza “glob.cs” para comparar las rutas de los archivos utilizando el patrón de ruta de archivo proporcionado.
    3. Llama a los datos devueltos para obtener los nombres de los directorios y archivos o directorios hasta un nivel de profundidad específico.
    4. Combina los directorios coincidentes con la ruta base o la ruta raíz, lo cual nos dará las rutas absolutas.

    Con esto, podrás tener un enfoque flexible y escalable para comparar rutas de archivos de forma recursiva utilizando los patrones que proporcionaste y luego obtener las rutas absolutas de los directorios y archivos coincidentes.

Comments are closed.