Работа с файловой системой в C#. Работа с дисками (класс DriveInfo)

Так или иначе, но большинство задач при написании приложений связано с работой с файловой системой — дисками, файлами, каталогами и т.д.  Так, например, нам может потребоваться информация о файлах, расположенных в определенном каталоге, или доступное свободное место на жестком диске и т.д., не говоря уже о создании, удалении или перемещении файлов, генерируемых нашим приложением. 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}");
                }
            }
        }
    }
}

Результат вывода в консоли:

Название: C:\
Тип: 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 Неизвестный тип диска.
Подписаться
Уведомить о
guest
0 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии