27 / 27 / 7
Регистрация: 15.06.2014
Сообщений: 165
1

Создание дерева каталогов

07.07.2014, 12:08. Показов 5022. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет. Возникла вроде банальная, но проблема. Есть массив с путями до файлов в формате (/Folder1/Folder2/Folder3/file.txt) таких путей примерно 200-300 штук. Необходимо проверить существует ли каталог Folder3 (к примеру) и если нет, то создать его вместе со всеми недостающими папками (Folder1/Folder2). Можно, конечно применить метод Exists() вручную, но проверять таким образом 200-300 каталогов на существование - слишком муторно. Помогите.
Заранее спасибо.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.07.2014, 12:08
Ответы с готовыми решениями:

Построение дерева каталогов и файлов
Здравствуйте. Подскажите пожалуйста как сделать чтобы данный код искал ещё и файлы. void AddDirectories(TreeNode node) ...

Обход дерева каталогов с протоколированием действий
Господа, помогите написать приложение, до экзамена осталось мало времени, и нужно сдать это задание (одно из многих). Как его делать просто...

Вывод дерева каталогов www-сервера
Здравствуйте,помогите пожалуйста разобраться.Нужно вывести дерево каталогов www сервера,но не могу понять как это сделать.Препод говорит...

13
 Аватар для Монфрид
1245 / 1055 / 293
Регистрация: 07.03.2012
Сообщений: 3,247
07.07.2014, 12:27 2
Цитата Сообщение от Frederick Посмотреть сообщение
Можно, конечно применить метод Exists() вручную, но проверять таким образом 200-300 каталогов на существование - слишком муторно. Помогите.
э, а собственно как вы ещё хотели?
1
27 / 27 / 7
Регистрация: 15.06.2014
Сообщений: 165
07.07.2014, 12:34  [ТС] 3
Ну это совсем ужасно) Придется говнокодить)
0
 Аватар для Монфрид
1245 / 1055 / 293
Регистрация: 07.03.2012
Сообщений: 3,247
07.07.2014, 12:48 4
Цитата Сообщение от Frederick Посмотреть сообщение
Ну это совсем ужасно) Придется говнокодить)
что говнокодного в проверке существования папки?
0
27 / 27 / 7
Регистрация: 15.06.2014
Сообщений: 165
07.07.2014, 12:54  [ТС] 5
Придется писать 300 строк только одних проверок.
0
 Аватар для Монфрид
1245 / 1055 / 293
Регистрация: 07.03.2012
Сообщений: 3,247
07.07.2014, 12:57 6
Цитата Сообщение от Frederick Посмотреть сообщение
Придется писать 300 строк только одних проверок.
вам следует узнать, что такое циклы. С ними пять строк максимум, наверно
0
27 / 27 / 7
Регистрация: 15.06.2014
Сообщений: 165
07.07.2014, 13:01  [ТС] 7
Я знаю что такое циклы и как ими пользоваться, дело в том что пути содержат не только имена папок но и конечного файла, а как обрезать путь до названия файла я не знаю.
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6100 / 4956 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
07.07.2014, 13:02 8
Лучший ответ Сообщение было отмечено Frederick как решение

Решение

http://msdn.microsoft.com/ru-r... .110).aspx
1
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
07.07.2014, 13:26 9
http://msdn.microsoft.com/ru-r... .110).aspx
0
169 / 132 / 29
Регистрация: 16.02.2013
Сообщений: 867
07.07.2014, 13:41 10
Цитата Сообщение от Frederick Посмотреть сообщение
Придется писать 300 строк только одних проверок.
да как вариант - в массив забиваешь пути, и потом уже в цикле проверяешь.
0
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8723 / 3675 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
07.07.2014, 13:59 11
Когда-то писал такую проверку:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
        /// <summary>
        /// Проверяет весь указанный путь на существование. Если какой-то из фрагментов
        /// не существует, он будет создан.
        /// </summary>
        /// <param name="path">Проверяемый путь.</param>
        /// <returns>Возвращает True если исходный путь существует, False если не существует.</returns>
        public static bool VerifyFolderTreePath ( string path, bool create = true )
        {
            var dirInfo = new DirectoryInfo( path );
 
            if ( dirInfo.Exists )
                return true;
 
            if ( !create )
                return dirInfo.Exists;
 
            var pathStack = new Stack<string>();
 
            while ( !dirInfo.Exists )
            {
                pathStack.Push( dirInfo.Name );
                dirInfo = dirInfo.Parent;
            }
 
            while ( pathStack.Count != 0 )
                dirInfo = dirInfo.CreateSubdirectory( pathStack.Pop() );
 
            return Directory.Exists( path );
        }
path - путь до конечной папки.
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6100 / 4956 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
07.07.2014, 14:19 12
Лучший ответ Сообщение было отмечено Frederick как решение

Решение

NickoTin, чем не устроил Directory?..
C#
1
2
3
            DirectoryInfo directoryInfo = Directory.CreateDirectory(@"C:\windows");
            bool result = directoryInfo.Exists;
            Console.WriteLine(result);
Creates all directories and subdirectories in the specified path unless they already exist.
2
07.07.2014, 14:45 13

Не по теме:

Цитата Сообщение от Psilon Посмотреть сообщение
чем не устроил Directory?
Не читал документацию :D велосипеды наше всё
Косяк, да... :facepalm:

0
27 / 27 / 7
Регистрация: 15.06.2014
Сообщений: 165
07.07.2014, 15:59  [ТС] 14
Psilon, ваш способ помог. Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.07.2014, 15:59
Помогаю со студенческими работами здесь

Проверка и создание каталогов и файлов по представленному пути
Добрый вечер, знатоки программного исскуства, такой вот у меня вопрос У меня в txt-файле есть небольшой список путей к PDF-файлам типо...

Есть ли в C# компонент для создание дерева каталогов
Ребят, подскажите есть ли в C# компонент для создание дерева каталогов, если нет то как его создать???????????

Вывод дерева каталогов.
Привет ALL! Как вывести окно с отображением дерева каталогов, подобное тому, что выводится при инсталяции программ, чтобы была...

Отображение дерева каталогов
Нужен код SelectDirectory, но чтоб окно было как на рисунке(с права). Проблема в том что эта функция не устанавливает текущую папку, а...

Построение дерева каталогов
Уважаемые форумчане, подскажите пожалуйста, как на с++ реализовать задание: Построение дерева каталогов


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

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

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Опции темы

Новые блоги и статьи
Protobuf в Go и новый Opaque API
golander 15.03.2025
Распределенные системы опираются на эффективные протоколы обмена данными — о чем вы, скорее всего, прекрасно знаете, если работаете с микросервисной архитектурой. Protocol Buffers (Protobuf) от. . .
Преобразование строк в C++: std::from_chars от C++17 до C++26
NullReferenced 15.03.2025
Конвертация строк в числа — задача, с которой сталкивается практически каждый C++ разработчик. Несмотря на кажущуюся простоту, эта операция таит множество подводных камней и неочевидных последствий. . .
Управление памятью в Java и новые сборщики мусора
Javaican 15.03.2025
Эффективное управление памятью всегда было ахиллесовой пятой высоконагруженных Java-приложений. При разработке на Java мы обычно полагаемся на автоматическое управление памятью через сборщики мусора. . .
Angular или Svelte - что выбрать?
Reangularity 15.03.2025
Во фронтенд-разработке Angular и Svelte представляют собой два совершенно разных подхода к решению схожих задач. Один — полноценный, мощный монолит с корпоративной поддержкой, другой — компактный,. . .
Spring Cloud микросервисы: обнаружение и отслеживание
Javaican 15.03.2025
В разработке корпоративных приложений всё больше команд обращают внимание на микросервисную архитектуру. Но с этой архитектурой приходят и специфичные трудности: как сервисам находить друг друга в. . .
Запуск контейнера Docker в облаке
Mr. Docker 15.03.2025
Что такое Docker-контейнер? Если коротко — это легковесный, автономный пакет, содержащий всё необходимое для запуска приложения: код, зависимости, библиотеки и конфигурации. Когда мы говорим о. . .
Осваиваем Kubernetes: Подробная шпаргалка
Mr. Docker 15.03.2025
Kubernetes — это открытая платформа для автоматизации развертывания, масштабирования и управления контейнеризированными приложениями. Он был создан для решения проблем, с которыми сталкиваются. . .
Лучшие PHP REST API фреймворки
Jason-Webb 15.03.2025
Современные PHP REST API фреймворки предлагают большой набор функциональности: от автоматической валидации данных и управления маршрутизацией до генерации документации и интеграции с различными. . .
Многопоточность в Java с Project Loom: виртуальные или обычные потоки
Javaican 15.03.2025
Многопоточность всегда была одноим из основных элементов в разработке современного программного обеспечения. Она позволяет приложениям обрабатывать несколько задач одновременно, что критично для. . .
Что нового в Swift 6 и особенности миграции
mobDevWorks 15.03.2025
Swift 6 — это новый крупный релиз языка программирования от Apple, анонсированный на WWDC 2024. Если вы следили за эволюцией Swift, то наверняка заметили, что многие значимые возможности, которые. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru