powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Функция для создания иерархии каталогов
20 сообщений из 20, страница 1 из 1
Функция для создания иерархии каталогов
    #39499057
polin11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть ли в С++ функция для создания списка вложенных папок,
например path="my\\my1\\my2" (аналог функции в python os.makedirs(path)), чтобы
создать вложенные каталоги
..my
....my1
.......my2
...
Рейтинг: 0 / 0
Функция для создания иерархии каталогов
    #39499064
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
polin11, нет. Пиши свой алгоритм.
...
Рейтинг: 0 / 0
Функция для создания иерархии каталогов
    #39499069
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devПиши свой алгоритм.
алгоритм - это слишком пафосно для такой функции
...
Рейтинг: 0 / 0
Функция для создания иерархии каталогов
    #39499083
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
polin11,

Код: plaintext
1.
2.
3.
#include <boost/filesystem.hpp>
...
boost::filesystem::create_directories("a/b/c");
...
Рейтинг: 0 / 0
Функция для создания иерархии каталогов
    #39499222
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Функция для создания иерархии каталогов
    #39499367
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если я всё правильно понял, в с++17 ожидается:
Код: plaintext
1.
bool std::filesystem::create_directories(const std::filesystem::path&);
...
Рейтинг: 0 / 0
Функция для создания иерархии каталогов
    #39499838
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbесли я всё правильно понял, в с++17 ожидается:
Код: plaintext
1.
bool std::filesystem::create_directories(const std::filesystem::path&);


g-mkdir-with-parents()
...
Рейтинг: 0 / 0
Функция для создания иерархии каталогов
    #39500044
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl, а это под виндами работает?
...
Рейтинг: 0 / 0
Функция для создания иерархии каталогов
    #39501446
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbWhite Owl, а это под виндами работает?Конечно.
...
Рейтинг: 0 / 0
Функция для создания иерархии каталогов
    #39501554
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
polin11Есть ли в С++ функция для создания списка вложенных папок,
например path="my\\my1\\my2" (аналог функции в python os.makedirs(path)), чтобы
создать вложенные каталоги
..my
....my1
.......my2
Если готовая функция не отработает по причине EACCESS то все равно придется разбирать ее
работу step-by-step чтобы понять на каком уровне она упала по причине нехватки привилений.

А это ставит под вопрос полезность такого обобщения.
...
Рейтинг: 0 / 0
Функция для создания иерархии каталогов
    #39501562
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЕсли готовая функция не отработает по причине EACCESS то все равно придется разбирать ее
работу step-by-step чтобы понять на каком уровне она упала по причине нехватки привилений.
и нужно ли пытаться откатиться при неудаче
...
Рейтинг: 0 / 0
Функция для создания иерархии каталогов
    #39501567
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилmaytonЕсли готовая функция не отработает по причине EACCESS то все равно придется разбирать ее
работу step-by-step чтобы понять на каком уровне она упала по причине нехватки привилений.
и нужно ли пытаться откатиться при неудачеКонечно нет. Чего там откатывать то?
Если мы на уровне Ч получили EACCESS, это значит как минимум уровень Ч уже существует, но мы не можем в нем ничего создавать.
Иными словами, мы получим EACCESS при первой же попытке создать новый подкаталог где-то в пути. А если не получили, то сможем создать и вложенные.
...
Рейтинг: 0 / 0
Функция для создания иерархии каталогов
    #39501575
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что вернёт Буст-овская реализация?
...
Рейтинг: 0 / 0
Функция для создания иерархии каталогов
    #39501599
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl,
Что откатывать - удалять созданные каталоги при невозможности довести дело до конца,
Например - слишком длинный путь если получается
...
Рейтинг: 0 / 0
Функция для создания иерархии каталогов
    #39501600
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Причем откатывать надо аккуратно. Если завершилось неудачей то
откат
Код: plaintext
1.
/home/polin/my1/my2/

может как-бе почистить даже то что не нужно.
...
Рейтинг: 0 / 0
Функция для создания иерархии каталогов
    #39501614
Gluck_13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonПричем откатывать надо аккуратно. Если завершилось неудачей то
откат
Код: plaintext
1.
/home/polin/my1/my2/

может как-бе почистить даже то что не нужно.

А в условиях конкуренции - еще более аккуратно :)
Например, в этом пути не было папки my1, мы ее создали. Но не факт, что мы ее должны удалить в случае облома при создании папки my2, за это время другой процесс/поток мог создать файл в папке my1.

Здесь была бы очень кстати транзакционная NTFS с функциями типа CreateDirectoryTransacted.
...
Рейтинг: 0 / 0
Функция для создания иерархии каталогов
    #39501643
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чем сложнее функция - тем сложнее её ошибки.

В некотором приближении мы могли бы сказать автору что это есть модификация дерева в условиях concurrency
...
Рейтинг: 0 / 0
Функция для создания иерархии каталогов
    #39501645
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluck_13Например, в этом пути не было папки my1, мы ее создали. Но не факт, что мы ее должны удалить в случае облома при создании папки my2, за это время другой процесс/поток мог создать файл в папке my1.

Здесь была бы очень кстати транзакционная NTFS с функциями типа CreateDirectoryTransacted.Зачем изобретать сложности на ровном месте???
rmdir удаляет (только) пустые каталоги и всё, что требуется "в случае конкурентности" - аккуратно обработать ошибку.
...
Рейтинг: 0 / 0
Функция для создания иерархии каталогов
    #39502173
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет.. это просто неприлично!

http://www.cyberforum.ru/cpp-beginners/thread2023367.html

Ох уж этот сайберфорум... Закрывать что-ли всех межфорумных дублей?
...
Рейтинг: 0 / 0
Функция для создания иерархии каталогов
    #39502257
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonОх уж этот сайберфорум... Закрывать что-ли всех межфорумных дублей?
Не удается отобразить эту страницу o_O

При этом сам хост пингуется... о_О

Не знаю, что там, но люди обычно, если срочно надо, сразу постят в несколько форумов вопросы.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Функция для создания иерархии каталогов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]