Рекурсия и IEnumerable - Обход всех файлов из директории - C#
Формулировка задачи:
Доброго времени суток. Требуется написать обход всех файлов из директории. Слепил вот такой велосипед, но рекурсия здесь не работает. Как можно сделать по другому?
Есть варианты по улучшению? А то мне кажется, что это какой то бред...
static IEnumerable<FileInfo> getAllFilesFromDirectory( DirectoryInfo root ) { FileInfo[] files = null; DirectoryInfo[] subDirs = null; try { files = root.GetFiles(); } catch ( Exception e ) { Console.Error.WriteLine( e.Message ); } if ( files == null ) yield break; foreach ( var file in files ) { Console.WriteLine(file.FullName); yield return file; } subDirs = root.GetDirectories(); foreach ( var dirInfo in subDirs ) getAllFilesFromDirectory( dirInfo ); }
Проблема решена:
static IEnumerable<FileInfo> getAllFilesFromDirectory( DirectoryInfo root ) { FileInfo[] files = null; DirectoryInfo[] subDirs = null; try { files = root.GetFiles(); } catch ( Exception e ) { Console.Error.WriteLine( e.Message ); } if ( files == null ) yield break; foreach ( var file in files ) { Console.WriteLine(file.FullName); yield return file; } subDirs = root.GetDirectories(); foreach ( var dirInfo in subDirs ) foreach ( var file in getAllFilesFromDirectory( dirInfo ) ) yield return file; }
Решение задачи: «Рекурсия и IEnumerable - Обход всех файлов из директории»
textual
Листинг программы
new DirectoryInfo("путь").GetFiles("*", SearchOption.AllDirectories)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д