c# Шпаргалка для работы с папками и подпапками
Либо в коде напишите слово DirectoryInfo, затем подведите на него курсор и нажмите правую кнопку мыши, появиться меню, теперь выполните действия как на картинке ниже.


Пространство имён System.IO содержит большое количество типов для работы с файлами и папками. Одним из таких типов является класс DirectoryInfo, работа с которым будет рассмотрена в этой статье.
Для проверки кода было создано обычное Windows Forms приложение. После чего на форму была помещена кнопка, при нажатии на которую выполняется одно из ниже описанных действий. Всё это делать не нужно, это лишь пояснение, почему все куски кода расположены в обработчике события Button.Click

Работа с папками
Перед тем, как выполнить какое-либо действие с папкой или подпапкой, желательно выполнить проверку на существование данной папки. Для этого можно использовать метод Exists, который позволит сократить количество возможных исключений, а так же защитит уже существующую папку, с таким же именем, от перезаписи.

Как получить полный путь к папке?

Как переименовать папку?

Как удалить папку?
Данный пример можно использовать, если требуется удалить пустую папку, не содержащую в себе других подпапок и файлов.
Пример удаление папки с подпапками или файлами приведен ниже.
Работа с подпапками

Создание нескольких подпапок
В данном примере создается 5 подпапок

Как удалить папку с подпапками?
Если основная папка содержит внутри себя какие-либо подпапки или файлы, то вместо удаления возникнет исключение.

Чтобы исключение не возникало, нужно передать в метод значение — true.
Creating a new directory in C
I want to write a program that checks for the existence of a directory; if that directory does not exist then it creates the directory and a log file inside of it, but if the directory already exists, then it just creates a new log file in that folder.
How would I do this in C with Linux?
![]()
4 Answers 4
Look at stat for checking if the directory exists,
And mkdir , to create a directory.
You can see the manual of these functions with the man 2 stat and man 2 mkdir commands.
![]()
You can use mkdir:
I want to write a program that (. ) creates the directory and a (. ) file inside of it
because this is a very common question, here is the code to create multiple levels of directories and than call fopen. I’m using a gnu extension to print the error message with printf.
![]()
![]()
int mkdir (const char *filename, mode_t mode)
For best practice it is recommended to use an integer-alias for mode. The argument mode specifies the file permissions for the new directory.
Read + Write + Execute: S_IRWXU (User), S_IRWXG (Group), S_IRWXO (Others)
If you want to know that the directory exists, lookup the errno’s for EEXIST.
Создайте каталог с C#
В этом посте будет обсуждаться, как программно создать каталог с помощью C#.
Идея состоит в том, чтобы использовать Directory.CreateDirectory() метод из System.IO namespace для создания каталога по указанному пути. В следующем примере создается указанный каталог, если он не существует.
The Directory.CreateDirectory() метод не генерирует исключение, если каталог уже существует. Следовательно, нет необходимости проверять наличие каталога, и код можно упростить так:
Это все о создании каталога с C#.
Оценить этот пост
Средний рейтинг 5 /5. Подсчет голосов: 21
Голосов пока нет! Будьте первым, кто оценит этот пост.
Сожалеем, что этот пост не оказался для вас полезным!
Расскажите, как мы можем улучшить этот пост?
Спасибо за чтение.
Пожалуйста, используйте наш онлайн-компилятор размещать код в комментариях, используя C, C++, Java, Python, JavaScript, C#, PHP и многие другие популярные языки программирования.
Как мы? Порекомендуйте нас своим друзьям и помогите нам расти. Удачного кодирования
Работа с файловой системой в C#. Работа с каталогами (классы Directory и DirectoryInfo)
В предыдущей части мы рассмотрели работу с дисками. Сегодня углубимся в работу с файловой системой в C# и рассмотрим вопросы по работе с каталогами. Для работы с каталогами в пространстве имен System.IO можно использовать сразу два класса: Directory и DirectoryInfo . Во многом эти классы схожи по функциональности и оба класса являются статическими, однако, следуя рекомендациям Microsoft, класс DirectoryInfo следует использовать в том случае, если в приложении подразумевается, что объект для работы с директориями будет использоваться многократно. В отличие от DirectoryInfo , класс Directory выполняют проверку безопасности всех методов, что, в итоге, может сказаться на производительности приложения.
Класс Directory
Класс Directory — это статический класс, предоставляющий ряд статических методов для управления каталогами. Некоторые из этих методов:
- CreateDirectory(path) — создает каталог по указанному пути path
- Delete(path) — удаляет каталог по указанному пути path
- Exists(path) — определяет, существует ли каталог по указанному пути path . Если существует, возвращается true , если не существует, то false
- GetDirectories(path) — получает список каталогов в каталоге path
- GetFiles(path) — получает список файлов в каталоге path
- Move(sourceDirName, destDirName) — перемещает каталог
- GetParent(path) — получение родительского каталога
- Get Directory Root(path) — возвращает для заданного пути сведения о томе и корневом каталоге по отдельности или сразу
- GetCurrentDirectory() — получает текущий рабочий каталог приложения
Как в C# получить список всех каталогов в определенном каталоге?
Получим список всех каталогов в каталоге C:\Windows:
Результат вывода будет примерно следующим:
Как в C# получить путь к каталогу из которого запущена программа?
Для получения каталога из которого было запущено приложение можно воспользоваться методом Directory.GetCurrentDirectory() . Например,
Результат может быть примерно таким:
Как в C# получить сведения о родительском каталоге и томе?
Для получения сведений о родительском каталоге в C# используется метод Directory.GetParent() , а для получения корневого тома — метод Directory.GetDirectoryRoot() . Например,
Вывод консоли будет следующим:
Как было сказано выше, классы Directory и DirectoryInfo во много схожи по работе, поэтому далее рассмотрим различные варианты работы с каталогами в C#, используя второй класс — DirectoryInfo .
Класс DirectoryInfo
Данный класс предоставляет функциональность для создания, удаления, перемещения и других операций с каталогами. Вот только некоторые из его свойств и методов:
- Create() : создает каталог
- CreateSubdirectory(path) : создает подкаталог по указанному пути path
- Delete() : удаляет каталог
- Свойство Exists : определяет, существует ли каталог
- GetDirectories() : получает список каталогов
- GetFiles() : получает список файлов
- MoveTo(destDirName) : перемещает каталог
- Свойство Parent : получение родительского каталога
- Свойство Root : получение корневого каталога
Как можно видеть по описанию свойств и методов, часть того, что у класса Directory определено как метод (например, Exists ) в DirectoryInfo определено как свойство, что позволяет использовать объект класса DirectoryInfo многократно, избегая возможно лишних проверок.
Как в C# создавать каталоги и подкаталоги?
Для создания каталогов и подкаталогов в C# используются методы DirectoryInfo.Create() и DirectoryInfo. CreateSubdirectory(path) . Рассмотрим использование этих методов в следующем примере:
В этом примере мы вначале проверяем наличие директории, используя свойство DirectoryInfo.Exist и, если директория отсутствует, то создаем её. На втором шаге мы, используя метод DirectoryInfo. CreateSubdirectory(path) , создаем подкаталог. Вывод консоли будет выглядеть следующим образом:
Как в C# получить дату/время создания каталога и его атрибуты?
У класса DirectoryInfo есть все необходимые методы для получения информации о каталоге. Например:
Вывод консоли будет следующим:
Как в C# сделать скрытый каталог?
Будет скрыта последняя папка (в примере — это bin ). Вывод консоли:
Как в C# удалить каталог?
Для удаления каталога в C# может использоваться метод DirectoryInfo.Delete() . При этом, следует обратить внимание, что простой вызов этого метода (без параметров) вызовет исключение в том случае, если вы попытаетесь удалить каталог в котором находятся какие-либо другие элементы, например, файлы. Поэтому, если вам необходимо удалить каталог со всем содержимым, то необходимо выполнить следующим код:
Про обработку исключений в C# см. здесь.
Как в C# переместить каталог?
Итого
Сегодня мы рассмотрели основные моменты по работе с каталогами в C# с использованием классов Directory и DirectoryInfo . Научились создавать, перемещать и удалять каталоги, перечислять все подкаталоги в определенном каталоге. За рамками остались вопросы, касающиеся перечисления файлов в каталоге, но об этом мы подробно поговорим в следующих статьях.