c# Шпаргалка для работы с папками и подпапками

c# Шпаргалка для работы с папками и подпапками

Перед началом работы подключите пространство имён System.IO

Это можно выполнить как вручную, добавив строку

using System.IO;

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

подключение пространства имён System.IO

Результат

результат

Пространство имён 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());
}
}
}

Читайте также:

Leave a Reply

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*