Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
660 / 530 / 137
Регистрация: 07.07.2011
Сообщений: 1,232
1

Рекурсия и IEnumerable - Обход всех файлов из директории

26.05.2014, 09:20. Показов 2358. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток. Требуется написать обход всех файлов из директории. Слепил вот такой велосипед, но рекурсия здесь не работает. Как можно сделать по другому?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        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 );
        }
Добавлено через 1 минуту
Проблема решена:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
        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;
        }
Есть варианты по улучшению? А то мне кажется, что это какой то бред...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.05.2014, 09:20
Ответы с готовыми решениями:

Параллельный рекурсивный обход директории и поиск всех обычных файлов
Задача заключается в параллельном рекурсивном обходе директории и поиске всех обычных файлов....

Обход заданной директории и вывод всех её файлов и папок в файл-отчет
Написать функцию, которая делает обход заданной директории и выводит все её файлы и папки и...

Вывод всех файлов и поддиректорий в заданной директории (добавить в код ввод директории)
.586p .model flat, stdcall std_output_handle equ -11 std_input_handle equ -10 extern...

Обход всех файлов
Ребят, может у кого остался код рекурсивного обхода всех файлов на жестком диске. Или есть ссылка...

1
995 / 893 / 354
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
26.05.2014, 09:37 2
Если с доступом к папкам особых проблем не предвидится, то вообще так можно:
C#
1
new DirectoryInfo("путь").GetFiles("*", SearchOption.AllDirectories)
1
26.05.2014, 09:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.05.2014, 09:37
Помогаю со студенческими работами здесь

Обход всех файлов в каталоге - Qt 5.7
Всем привет! Необходимо получить список файлов заданного расширения (например, txt) в заданной...

Обход всех файлов в каталоге
Всем привет! Необходимо получить список файлов заданного расширения (например, txt) в заданной...

Обход всех файлов в каталоге
Ребята помогите открыть все файлы по пути, не зная их. Например чтобы пройтись по всем файлам на...

Удаление всех файлов в директории
Как удалить все файлы в произвольной директории path?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru