Так или иначе, но большинство задач при написании приложений связано с работой с файловой системой — дисками, файлами, каталогами и т.д. Так, например, нам может потребоваться информация о файлах, расположенных в определенном каталоге, или доступное свободное место на жестком диске и т.д., не говоря уже о создании, удалении или перемещении файлов, генерируемых нашим приложением. C# предоставляет нам достаточно широкие возможности по работе с файловой системой ОС, большинство из которых сосредоточены в пространстве имен System.IO
.
Работа с дисками
Для представления информации о диске в пространстве имен System.IO
используется класс DriveInfo
. В этом классе находится статический метод GetDrives()
, который возвращает информацию обо всех логических дисках компьютера. Также DriveInfo
предоставляет ряд полезных свойств:
AvailableFreeSpace
: указывает на объем доступного свободного места на диске в байтах доступного текущему пользователюDriveFormat
: получает имя файловой системыDriveType
: представляет тип дискаIsReady
: готов ли диск (например, DVD-диск может быть не вставлен в дисковод)Name
: получает имя дискаTotalFreeSpace
: получает общий объем свободного места на диске в байтах доступного всем пользователямTotalSize
: общий размер диска в байтахVolumeLabel
: получает или устанавливает метку томаRootDirectory
: возвращает информацию о корневом каталоге диска
Получим информацию обо всех дисках на компьютере:
using System; using System.IO; namespace FileSystem { class Program { static void Main(string[] args) { 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}"); } } } } }
Результат вывода в консоли:
Тип: Fixed
Объем диска: 119309852672
Свободное пространство: 39598612480
Метка:
Название: D:\
Тип: Fixed
Объем диска: 320070479872
Свободное пространство: 141056864256
Метка: Mails
Название: E:\
Тип: CDRom
Название: F:\
Тип: Fixed
Объем диска: 2000396288000
Свободное пространство: 1349044289536
Метка: SAMSUNG
Название: G:\
Тип: Fixed
Объем диска: 999532429312
Свободное пространство: 429513146368
Метка: 1 Tb Backup
Название: H:\
Тип: Removable
Объем диска: 8079278080
Свободное пространство: 8059432960
Метка: ESD-USB
Свойство DriveType
является перечислением и может принимать следующие значения:
CDRom |
5 | Диск — это оптическое дисковое устройство, например компакт-диск или DVD-диск. |
Fixed |
3 | Диск является жестким диском. |
Network |
4 | Диск является сетевым диском. |
NoRootDirectory |
1 | Диск не содержит корневого каталога. |
Ram |
6 | Диск является диском ОЗУ. |
Removable |
2 | Диск — это съемное устройство хранения, например USB- флэш-накопитель. |
Unknown |
0 | Неизвестный тип диска. |