c# Шпаргалка для работы с папками и подпапками
Перед началом работы подключите пространство имён System.IO
Это можно выполнить как вручную, добавив строку
using System.IO;
Либо в коде напишите слово DirectoryInfo, затем подведите на него курсор и нажмите правую кнопку мыши, появиться меню, теперь выполните действия как на картинке ниже.
Результат
Пространство имён System.IO содержит большое количество типов для работы с файлами и папками. Одним из таких типов является класс DirectoryInfo, работа с которым будет рассмотрена в этой статье.
Для проверки кода было создано обычное Windows Forms приложение. После чего на форму была помещена кнопка, при нажатии на которую выполняется одно из ниже описанных действий. Всё это делать не нужно, это лишь пояснение, почему все куски кода расположены в обработчике события Button.Click
Работа с папками
Создание папки
private void button1_Click(object sender, EventArgs e) { string folderName = @"C:\Test"; DirectoryInfo drInfo = new DirectoryInfo(folderName); drInfo.Create(); }
Перед тем, как выполнить какое-либо действие с папкой или подпапкой, желательно выполнить проверку на существование данной папки. Для этого можно использовать метод Exists, который позволит сократить количество возможных исключений, а так же защитит уже существующую папку, с таким же именем, от перезаписи.
if (!drInfo.Exists) { drInfo.Create(); }
Результат
Как получить полный путь к папке?
private void button1_Click(object sender, EventArgs e) { string folderName = @"C:\Test"; DirectoryInfo drInfo = new DirectoryInfo(folderName); if (drInfo.Exists) { MessageBox.Show(drInfo.FullName); } }
Результат
Как переименовать папку?
private void button1_Click(object sender, EventArgs e) { //Папка, которую переименовываем string currentFolderName = @"C:\Test"; //Новое имя папки string newFolderName = @"C:\SuperTest"; DirectoryInfo drInfo = new DirectoryInfo(currentFolderName); if (drInfo.Exists) { drInfo.MoveTo(newFolderName); } }
Результат
Как удалить папку?
Данный пример можно использовать, если требуется удалить пустую папку, не содержащую в себе других подпапок и файлов.
private void button1_Click(object sender, EventArgs e) { string currentFolderName = @"C:\Test"; DirectoryInfo drInfo = new DirectoryInfo(currentFolderName); if (drInfo.Exists) { drInfo.Delete(); } }
Пример удаление папки с подпапками или файлами приведен ниже.
Работа с подпапками
Создание подпапки
private void button1_Click(object sender, EventArgs e) { string currentFolderName = @"C:\Test"; string subDirName = "Dir1"; DirectoryInfo drInfo = new DirectoryInfo(currentFolderName); if (drInfo.Exists) { drInfo.CreateSubdirectory(subDirName); } }
Результат
Создание нескольких подпапок
В данном примере создается 5 подпапок
private void button1_Click(object sender, EventArgs e) { string currentFolderName = @"C:\Test"; string subDirName = "Dir"; DirectoryInfo drInfo = new DirectoryInfo(currentFolderName); if (drInfo.Exists) { for (int i = 1; i 6; i++) { drInfo.CreateSubdirectory(subDirName + i); } } }
Результат
Как удалить папку с подпапками?
Если основная папка содержит внутри себя какие-либо подпапки или файлы, то вместо удаления возникнет исключение.
Чтобы исключение не возникало, нужно передать в метод значение — true.
private void button1_Click(object sender, EventArgs e) { string currentFolderName = @"C:\Test"; DirectoryInfo drInfo = new DirectoryInfo(currentFolderName); if (drInfo.Exists) { drInfo.Delete(true); } }
Удаление одной из подпапок
private void button1_Click(object sender, EventArgs e) { string currentFolderName = @"C:\Test"; //Удаляемая подпапка string subDirName = "Dir5"; DirectoryInfo drInfo; drInfo = new DirectoryInfo(currentFolderName + "\\"+ subDirName); if (drInfo.Exists) { drInfo.Delete(); } }
Результат
Как получить все имена подпапок и вывести полученный список в listBox
private void button1_Click(object sender, EventArgs e) { string currentFolderName = @"C:\Test"; DirectoryInfo drInfo = new DirectoryInfo(currentFolderName); if (drInfo.Exists) { DirectoryInfo [] di = drInfo.GetDirectories(); foreach (var dir in di) { listBox1.Items.Add(dir.Name); } //Список так же можно вывести, не используя цикл //listBox1.DataSource = null; //listBox1.DataSource = di; } }
Результат
Как скрыть папку или подпапку?
private void button1_Click(object sender, EventArgs e) { string currentFolderName = @"C:\Test"; //Скрыть папку string subDir = "Dir4"; DirectoryInfo drInfo; drInfo = new DirectoryInfo(currentFolderName + "\\" + subDir); drInfo.Attributes = FileAttributes.Hidden; }
Результат
Получить количество подпапок
private void button1_Click(object sender, EventArgs e) { string folderName = @"C:\Test"; DirectoryInfo drInfo = new DirectoryInfo(folderName); if (drInfo.Exists) { int count = drInfo.GetDirectories().Count(); } }
Матрёшка
В примере показано, как создать три подпапки, вложенных друг в друга
private void button1_Click(object sender, EventArgs e) { string folderName = @"C:\Test"; DirectoryInfo drInfo = new DirectoryInfo(folderName); if (drInfo.Exists) { for (int i = 1; i 4; i++) { drInfo = drInfo.CreateSubdirectory(i.ToString()); } } }
Читайте также: