Рекурсия и 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)