Форум программистов, компьютерный форум, киберфорум
Наши страницы
Boost C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/10: Рейтинг темы: голосов - 10, средняя оценка - 4.80
Avazart
Эксперт С++
7805 / 5704 / 561
Регистрация: 10.12.2010
Сообщений: 26,020
Записей в блоге: 17
1

boost::filesystem и искючения

13.03.2013, 03:50. Просмотров 1955. Ответов 14
Метки нет (Все метки)

При поиске файлов к примеру на диске C:\ можно получить к примеру такое сообщение.
boost::filesystem::basic_directory_iterator constructor: Отказано в доступе
После чего поиск может прекратится...
Можно ли как то это обойти что бы примеру не было и таких исключений а находило только, то к чему есть доступ ?
Или как правильно организовывать обработку исключений что бы поиск не прерывался ?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.03.2013, 03:50
Ответы с готовыми решениями:

boost::filesystem
Доброго времени суток. Подскажите пожалуйста, как можно преобразовать path в char*?

boost filesystem
Всем привет! В студии при построении проекта с подключенным boost/filesystem.hpp ошибка LINK :...

boost.filesystem
Всем привет! Проблема в следующем. Если пытаюсь скомпилировать код, содержащий включение каких...

не могу разобраться c boost.filesystem
не как не могу разобрать с boost.filesystem. Нужно записать содиржимое католога в массив. Но не как...

boost::filesystem Относительный путь
Допустим есть путь Можно ли (и как ?) получить путь относительно другого пути ( или текущего...

14
diagon
Higher
1940 / 1206 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
13.03.2013, 11:42 2
Я в свое время не нашел способа это обойти и написал свой рекурсивный поиск.
[boost::filesystem] Как пройтись по каталогу, включая вложенные каталоги ?
(Там проблема не только в ссылках, но и в исключениях была)
0
Avazart
Эксперт С++
7805 / 5704 / 561
Регистрация: 10.12.2010
Сообщений: 26,020
Записей в блоге: 17
13.03.2013, 14:12  [ТС] 3
Ну так у меня "свой" поиск и тоже с рекурсией (нужно проверять по регулярке файлы)

К примеру уже в этом месте может быть исключение
C++
1
for ( fs::directory_iterator it(directoryName) // ...
Добавлено через 23 минуты
Цитата Сообщение от diagon Посмотреть сообщение
(Там проблема не только в ссылках, но и в исключениях была)
В винде ссылок нет так что нет таких проблем ...
0
diagon
Higher
1940 / 1206 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
13.03.2013, 14:20 4
Цитата Сообщение от Avazart Посмотреть сообщение
В винде ссылок нет так что нет таких проблем ...
В винде кидались исключения, если не хватало прав. Мой код просто игнорировал такие файлы/папки.

Цитата Сообщение от Avazart Посмотреть сообщение
К примеру уже в этом месте может быть исключение
Ну, если вы не можете получить итератор хотя бы на стартовую директорию, то сделать вообще ничего не получится.
0
Avazart
Эксперт С++
7805 / 5704 / 561
Регистрация: 10.12.2010
Сообщений: 26,020
Записей в блоге: 17
13.03.2013, 14:30  [ТС] 5
Цитата Сообщение от diagon Посмотреть сообщение
Ну, если вы не можете получить итератор хотя бы на стартовую директорию, то сделать вообще ничего не получится.
А если рекурсия ?
0
diagon
Higher
1940 / 1206 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
13.03.2013, 14:38 6
Цитата Сообщение от Avazart Посмотреть сообщение
А если рекурсия ?
Ну, для того, что пустить рекурсию из определенной директории, нужно знать ее поддиректории. Если их получить нельзя, то никакой рекурсии не получится.
0
Avazart
Эксперт С++
7805 / 5704 / 561
Регистрация: 10.12.2010
Сообщений: 26,020
Записей в блоге: 17
13.03.2013, 14:42  [ТС] 7
Цитата Сообщение от diagon Посмотреть сообщение
Ну, для того, что пустить рекурсию из определенной директории, нужно знать ее поддиректории. Если их получить нельзя, то никакой рекурсии не получится.
Да я чет затупил, запутался в рекурсии...

Но никак не могу понять зачем возвращать вектор - это же медленно вроде, по крайней мере по старому стандарту... и еще временный вектор ?
0
diagon
Higher
1940 / 1206 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
13.03.2013, 14:48 8
Цитата Сообщение от Avazart Посмотреть сообщение
Но никак не могу понять зачем возвращать вектор - это же медленно вроде, по крайней мере по старому стандарту... и еще временный вектор ?
Можно вызывать callback для каждого файла.
Но мне все равно нужен был вектор в итоге.
0
Avazart
Эксперт С++
7805 / 5704 / 561
Регистрация: 10.12.2010
Сообщений: 26,020
Записей в блоге: 17
13.03.2013, 15:24  [ТС] 9
Цитата Сообщение от diagon Посмотреть сообщение
Можно вызывать callback для каждого файла.
Но мне все равно нужен был вектор в итоге.
Ну так вектор по ссылке передавать параметром быстрее.

Добавлено через 26 минут
Наткнулся на такое
https://svn.boost.org/trac/boost/ticket/4494
0
slipp1
13 / 12 / 9
Регистрация: 09.11.2012
Сообщений: 367
Записей в блоге: 1
04.11.2013, 02:51 10
Цитата Сообщение от Avazart Посмотреть сообщение
При поиске файлов к примеру на диске C:\ можно получить к примеру такое сообщение.

C++
1
boost::filesystem::basic_directory_iterator constructor: Отказано в доступе
После чего поиск может прекратится...
Можно ли как то это обойти что бы примеру не было и таких исключений а находило только, то к чему есть доступ ?
Или как правильно организовывать обработку исключений что бы поиск не прерывался ?
как проблему решили? спасибо.
0
Avazart
Эксперт С++
7805 / 5704 / 561
Регистрация: 10.12.2010
Сообщений: 26,020
Записей в блоге: 17
04.11.2013, 13:45  [ТС] 11
Цитата Сообщение от slipp1 Посмотреть сообщение
как проблему решили? спасибо.
Ловил исключения и "шел дальше", но это под виндой, там нет упомянутых ссылок.

Можно так же попробовать затребовать права администратора для программы с помощью манифеста.
1
slipp1
13 / 12 / 9
Регистрация: 09.11.2012
Сообщений: 367
Записей в блоге: 1
05.11.2013, 18:58 12
Цитата Сообщение от Avazart Посмотреть сообщение
с помощью манифеста
можно по подробнее...

питаюсь посчитать размер папки c:\windows при попытке доступа к папке без прав администратора, все валится...
0
Avazart
Эксперт С++
7805 / 5704 / 561
Регистрация: 10.12.2010
Сообщений: 26,020
Записей в блоге: 17
05.11.2013, 19:02  [ТС] 13
Цитата Сообщение от slipp1 Посмотреть сообщение
можно по подробнее...
UAC манифест, поищи на форуме уже обсуждалось.
0
slipp1
13 / 12 / 9
Регистрация: 09.11.2012
Сообщений: 367
Записей в блоге: 1
05.11.2013, 21:14 14
так обходу директори
C++
1
2
3
4
5
6
7
8
9
10
uintmax_t folderSize=0;
  for(recursive_directory_iterator recit(p);recit!=recursive_directory_iterator();recit++)
  {
    cout<<*recit<<endl;
    if(is_regular_file(*recit))
    {
      folderSize+=file_size(*recit);//здесь при доступе к папке c:\windows\csc все валится
    }
  }
  cout<<folderSize<<endl;
доступ к другим папкам с админ правами проходит. к этой нет. c:\windows\csc все валится

манифест сделал так(на первая миниатра), выдает вот такую ляпу (на второй картинке)
0
slipp1
13 / 12 / 9
Регистрация: 09.11.2012
Сообщений: 367
Записей в блоге: 1
05.11.2013, 21:22 15
pictures:::
0
Миниатюры
boost::filesystem и искючения   boost::filesystem и искючения  
05.11.2013, 21:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.11.2013, 21:22

Не удается подключить boost::filesystem
Решил начать изучать boost::filesystem - в итоге ошибки линковщика. Делал все как здесь начиная с...

[Code::Blocks] Не работает Boost.Filesystem
Есть скомпилированный Boost (MinGW 6.3.0), Code::Blocks 16.01, Boost 1.65. Подключаю Boost к...

Boost::filesystem::copy_file не копирует файлы
Вот код:#include &lt;iostream&gt; #include &lt;vector&gt; #define BOOST_NO_CXX11_SCOPED_ENUMS #include...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru