read net info example file io .net file-search

file - net - streamwriter



Búsqueda de archivos recurrentes en.net (3)

¿Qué tal esto? Evita la excepción lanzada a menudo por la búsqueda recursiva incorporada (es decir, obtiene acceso denegado a una sola carpeta, y toda su búsqueda muere), y se evalúa de forma perezosa (es decir, devuelve resultados tan pronto como los encuentra, en lugar de buffering 2000 resultados). El comportamiento lento le permite construir interfaces de usuario receptivas, etc., y también funciona bien con LINQ (especialmente First() , Take() , etc.).

using System; using System.Collections; using System.Collections.Generic; using System.IO; static class Program { // formatted for vertical space static void Main() { foreach (string match in Search("c://", "*.xml")) { Console.WriteLine(match); } } static IEnumerable<string> Search(string root, string searchPattern) { Queue<string> dirs = new Queue<string>(); dirs.Enqueue(root); while (dirs.Count > 0) { string dir = dirs.Dequeue(); // files string[] paths = null; try { paths = Directory.GetFiles(dir, searchPattern); } catch { } // swallow if (paths != null && paths.Length > 0) { foreach (string file in paths) { yield return file; } } // sub-directories paths = null; try { paths = Directory.GetDirectories(dir); } catch { } // swallow if (paths != null && paths.Length > 0) { foreach (string subDir in paths) { dirs.Enqueue(subDir); } } } } }

Necesito buscar un disco (C :, D: etc.) para un tipo de archivo particular (extensión como .xml, .csv, .xls). ¿Cómo preformé una búsqueda recursiva para recorrer todos los directorios y directorios internos y devolver la ruta completa de dónde están los archivos? o ¿dónde puedo obtener información sobre esto?

VB.NET o C #

Gracias

Editar ~ Me estoy encontrando con algunos errores, como no poder acceder al acceso al volumen del sistema, etc. ¿Alguien sabe dónde puedo ver algún código simple al implementar una búsqueda de archivos? Solo necesito buscar una unidad seleccionada y devolver la ruta completa del tipo de archivo para todos los archivos encontrados.


System.IO.Directory.GetFiles(@"c:/", "*.xml", SearchOption.AllDirectories);


Parece que la biblioteca recls - representa ls recursivas - ahora tiene una implementación pura de .NET . Acabo de leer sobre esto en Dr Dobb''s .

Sería usado como:

using Recls; using System; static class Program { // formatted for vertical space static void Main() { foreach(IEntry e in FileSearcher.Search(@"c:/", "*.xml|*.csv|*.xls")) { Console.WriteLine(e.Path); } }