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


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

Фреймворк .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
Метка диска: