Работа с файловой системой

Последнее обновление: 07.01.2022

Большинство задач в программировании так или иначе связаны с работой с файлами и каталогами. Нам может потребоваться прочитать текст из файла или наоборот произвести запись, удалить файл или целый каталог, не говоря уже о более комплексных задачах, как например, создание текстового редактора и других подобных задачах.

Фреймворк .NET предоставляет большие возможности по управлению и манипуляции файлами и каталогами, которые по большей части сосредоточены в пространстве имен System.IO. Классы, расположенные в этом пространстве имен (такие как Stream, StreamWriter, FileStream и др.), позволяют управлять файловым вводом-выводом.

Работа с дисками

Работу с файловой системой начнем с самого верхнего уровня - дисков. Для представления диска в пространстве имен System.IO имеется класс DriveInfo.

Этот класс имеет статический метод GetDrives(), который возвращает имена всех логических дисков компьютера. Также он предоставляет ряд полезных свойств:

  • AvailableFreeSpace: указывает на объем доступного свободного места на диске в байтах

  • DriveFormat: получает имя файловой системы

  • DriveType: представляет тип диска

  • IsReady: готов ли диск (например, DVD-диск может быть не вставлен в дисковод)

  • Name: получает имя диска

  • RootDirectory: возвращает корневой каталог диска

  • TotalFreeSpace: получает общий объем свободного места на диске в байтах

  • TotalSize: общий размер диска в байтах

  • VolumeLabel: получает или устанавливает метку тома

Получим имена и свойства всех дисков на компьютере:

DriveInfo[] drives = DriveInfo.GetDrives();

foreach (DriveInfo drive in drives)
{
    Console.WriteLine($"Название: {drive.Name}");
    Console.WriteLine($"Тип: {drive.DriveType}");
    if (drive.IsReady)
    {
        Console.WriteLine($"Объем диска: {drive.TotalSize}");
        Console.WriteLine($"Свободное пространство: {drive.TotalFreeSpace}");
        Console.WriteLine($"Метка диска: {drive.VolumeLabel}");
    }
    Console.WriteLine();
}

Консольный вывод в моем случае:

Название: C:\ 
Тип: Fixed
Объем диска: 624823205888
Свободное пространство: 58199781376
Метка диска: 

Название: D:\ 
Тип: Fixed
Объем диска: 105372446720
Свободное пространство: 3887951872
Метка диска: Windows7

Название: E:\ 
Тип: Fixed
Объем диска: 17809010688
Свободное пространство: 463650816
Метка диска: RECOVERY

Название: G:\ 
Тип: Fixed
Объем диска: 954200064
Свободное пространство: 275193856
Метка диска: 
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850