Работа с дисками
Большинство задач в программировании так или иначе связаны с работой с файлами и каталогами. Нам может потребоваться прочитать текст из файла или наоборот произвести запись, удалить файл или целый каталог, не говоря уже о более комплексных задачах, как например, создание текстового редактора и других подобных задачах.
Фреймворк .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
Метка диска: