![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| Miller_time |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 641 Регистрация: 8.9.2006 Где: Нижний Новгород Репутация: нет Всего: 1 |
Как просканировать папку на файлы ? Мне надо получить кол-во файлов и имена ? Такое реально сделать ?
|
|||
|
||||
| nankko |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 8.2.2007 Репутация: нет Всего: нет |
да,и очень просто)))
Итого,в массиве все имена файлов в заланной дериктории, и размер самого массива т.е кол-во файлов,потом с массивом можешь делать что хочешь)))) Это сообщение отредактировал(а) nankko - 9.2.2007, 14:41 |
||||
|
|||||
| Tror |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 193 Регистрация: 29.4.2005 Где: Кишинёв Репутация: 2 Всего: 4 |
а реально немного поиском воспользоваться?
--------------------
Не говори всегда что знаешь, но знай всегда что говоришь. /Клавдий/============================================Кто может -- тот делает. Кто не может... тот получает сертификат MCSE ;) |
|||
|
||||
| Miller_time |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 641 Регистрация: 8.9.2006 Где: Нижний Новгород Репутация: нет Всего: 1 |
А как получить конкретный файл из списка ? Тоесть выдернуть из массива ? его путь. и название
|
|||
|
||||
| Tror |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 193 Регистрация: 29.4.2005 Где: Кишинёв Репутация: 2 Всего: 4 |
а вот мне интересно ты на самом деле не мог найти или издеваешься?
DirectoryInfo.GetFiles() возвращает массив FileInfo, в котором есть вся необходимая тебе инфа --------------------
Не говори всегда что знаешь, но знай всегда что говоришь. /Клавдий/============================================Кто может -- тот делает. Кто не может... тот получает сертификат MCSE ;) |
|||
|
||||
| Stepan_Lameroff |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 164 Регистрация: 16.12.2006 Репутация: 9 Всего: 14 |
||||
|
||||
| Kvazilol |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 7.12.2006 Репутация: нет Всего: нет |
окей, пишу я, скажем
Drive.RootDirectory.GetFiles("*.zip", System.IO.SearchOption.AllDirectories) по идее вернутся все зип файлы в моем случае на диске C не тут то было!!! выскакивается исключение
в доступе к какойто там подпапке отказано. как решить проблему!? попробывал так -
выставил какоето право доступа Audit. но всеравно исключение. при любомчлене перечисления AccessControlSections возникает исключение... как быть!? мне нужно получить все "*.zip" файлы на диске. эти файлы будут использоваться только на чтение. если на диске папка которую нельзя открывать то пусть прогамма ее не открывает!! как это сделать то!?.. Это сообщение отредактировал(а) Kvazilol - 18.4.2007, 22:20 |
||||
|
|||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Не все директории доступны на получение списка файлов, и обрабатывать это нужно с пом. try..catch.
Пример - System Volume Information. Другой пример - сбойная запись в таблице FAT. Ещё пример - директория, к которой текущему пользователю запретил доступ системный администратор. -------------------- ![]() |
|||
|
||||
| Kvazilol |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 7.12.2006 Репутация: нет Всего: нет |
ну и не хочу я лезть куда нельзя. я хочу получить то что мне можно получать. как это сделать !? неужели нет таких универсальных решений?
|
|||
|
||||
| Naum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 743 Регистрация: 7.9.2005 Где: Саратов, ул. Поса дского, 298 Репутация: 8 Всего: 15 |
Последнее время, что-то часто такой вопрос встречается. Никто ничего не хочет делать. Все хотят, чтоб все уже было готово. Ну ты подумай, откуда разработчикам, которые находятся за несколько км от тебя и скорее всего ничего не знают о твоем существовании, знать к каким папкам у тебя есть доступ, а к каким нет, и вообще какие у тебя там папки? Неужели так трудно добавить парочку try-catch'ев? Тем более в твоем случае всего одни. -------------------- У нас всего два праздника Новый год и ТЯПница. |
|||
|
||||
| Kvazilol |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 7.12.2006 Репутация: нет Всего: нет |
да дело не в том что мне не нравится что происходит исключение.
дело в том что исключения происходят по самым незначительным причинам.. если бы можно было както параметризовать то может быть их не было бы (выставить так что я хочу получить те папки к которым можно получить доступ). а так придётся мне делать рекурсивный обход папок... пфе.. и не только мне а всем у кого задача - всеголиш получить все папки или папки в данной папке |
|||
|
||||
| Naum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 743 Регистрация: 7.9.2005 Где: Саратов, ул. Поса дского, 298 Репутация: 8 Всего: 15 |
Ну да. Такого к сожалению нет. А ты знаешь другие способы? То есть, допустим у меня есть папки C:\FFolder, C:\FFolder\FFFolder, C:\SFolder. Ты хочешь, чтоб вывело просто FFolder, FFFolder, SFolder? DirectoryInfo.GetDirectories() именно для этого и служит. И когда ты, например, захочешь получить список всех папок в корне системного диска, этот метод даст тебе список всех папок в корне системного диска, включая и те, к которым доступ запрещен. Например, System Volume Information. Однако, когда ты захочешь получить список папок в папке System Volume Information по вполне понятным причинам вылетит ошибка. -------------------- У нас всего два праздника Новый год и ТЯПница. |
|||
|
||||
| Kvazilol |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 7.12.2006 Репутация: нет Всего: нет |
вот сваял такой класс
и получаю файлы так foreach (System.IO.FileInfo File in new FileSearcher(extensions, Drive.RootDirectory).FindFiles()) { пока он прочесал весь диск С, прошло минуты две (задал расширения для поиска exe и pdf) видимо придется этот занос файлов в список делать в одном потоке а юзать сами файлы в другом, параллельном ему потоке.. тоесть там надо делать событие ФайлДобавлен и обрабатывать его в другом потоке... но это уже другая тема Это сообщение отредактировал(а) Kvazilol - 19.4.2007, 21:59 |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Kvazilol, так ведь любая прога (например Total Commander или Far) практически столько же времени потратит на рекурсивный обход раздела, к примеру если поиск по маске выполнить или дерево папок построить.
-------------------- ![]() |
|||
|
||||
| Kuznecoff |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 4.7.2007 Репутация: нет Всего: нет |
Чтоб не создавать тему новую спрошу тут, т.к. вопрос вообщем то схожий:
вот я получаю полный список файлов и директорий которые удовлетворяю маске введеной в текстовое поле
Если я ввожу какойто один тип файлов (к примеру "*.txt"), то поиск проходит нормально, но что нужно сделать если мне надо найти например такие файлы - "*.cs, *.cpp"??? На такую маску функция к сожалению не реагирует. Подскажите как решить проблему!!! |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |