Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Рекурсивный поиск файлов, C# .NET 
:(
    Опции темы
Softaz
Дата 26.3.2006, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


wasm
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 16.1.2006

Репутация: 3
Всего: 16



Как реализовать? Нужно получить путь+имя файла.
Нашел http://forum.vingrad.ru/index.php?showtopi...%B8%D1%81%D0%BA
Там рекурсии нет

Есть функция FindInFiles для поиска в файлах (конечно, малость не то), параметром которой можно указать рекурсивный поиск.
Только она возвращает _сразу_ весь массив имен, а не сразу как найдет следующий файл.
То есть сначала она найдет все файлы, скажем на диске C:\, и только потом можнос ними работать smile
Плюс ко всему, если возникает ошибка доступа к файлу, то, соответственно, массива не будет smile
Т.о. желательно получать имя файла _сразу_ после его нахождения, а не готовый массив после нахождения всех 100000 файлов.

Использование DllImport и API-функций FindFirst, FindNext также неприемлемо.



--------------------
Разочарованный в .NET
PM MAIL WWW   Вверх
Void
Дата 26.3.2006, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 25
Всего: 173



Softaz, этот вопрос неоднократно всплывал на RSDN, и в итоге, сколько я помню, пришли к выводу, что если надо получать файлы поочередно, то без WinAPI не обойтись.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
mr.DUDA
Дата 27.3.2006, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Не понимаю, чем не подходит DirectoryInfo и FileInfo ?


--------------------
user posted image
PM MAIL WWW   Вверх
Softaz
Дата 27.3.2006, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


wasm
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 16.1.2006

Репутация: 3
Всего: 16



Вот:

Код

public void FindInDir(DirectoryInfo dir, string pattern, bool recursive) 
{
    foreach (FileInfo file in dir.GetFiles(pattern)) 
    {
        ListBox1.Items.Add(file.FullName);
    }

    if (recursive) 
    {
        foreach (DirectoryInfo subdir in dir.GetDirectories()) 
        {
            this.FindInDir(subdir,pattern,recursive);
        }
    }
}

public void FindFiles(string dir, string pattern) 
{
    this.FindInDir(new DirectoryInfo(dir),pattern,true);
}



--------------------
Разочарованный в .NET
PM MAIL WWW   Вверх
Void
Дата 27.3.2006, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 25
Всего: 173



mr.DUDA,
Цитата

Т.о. желательно получать имя файла _сразу_ после его нахождения, а не готовый массив после нахождения всех 100000 файлов.

А так да, DirectoryInfo.GetFiles.
Добавлено @ 18:21
Кстати, внешний интерфейс к рекурсивному поиску можно реализовать в виде итератора. Тогда отпадет необходимость возвращать массив.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0904 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.