Как получить информацию о файловой системе диска?

#c# #filesystems #.net

#c# #файловые системы #.net

Вопрос:

Возможно ли прочитать информацию о файловой системе физического диска (например, если он отформатирован как NTFS, FAT и т.д.) С помощью .NET C # 3.5?

Если да, то какой класс мне следует использовать для определения этого?

Ответ №1:

Да, это возможно. Запросите DriveFormat свойство System.IO.DriveInfo класса.

 public static void Main()
{
    DriveInfo[] allDrives = DriveInfo.GetDrives();

    foreach (DriveInfo d in allDrives)
    {
        Console.WriteLine("Drive {0}", d.Name);
        Console.WriteLine("Type: {0}", d.DriveFormat);
    }
}
  

Комментарии:

1. @Sepehr Да, спасибо. Я не знаю, что случилось с примером кода. Я не имел в виду кучу случайных пробелов и не имел в виду «Тип файла».

Ответ №2:

Я думаю, вам также может быть интересна GetVolumeInformation функция.

[ПРАВИТЬ]
Вы также можете использовать объекты WMI для получения такой информации, например:

 using System.Management;
.....
ManagementObject disk = new ManagementObject("win32_logicaldisk.deviceid="c:"");
disk.Get();
MessageBox.Show(disk["FreeSpace"]   " bytes");  // Displays disk free space
MessageBox.Show(disk["VolumeName"].ToString()); // Displays disk label
MessageBox.Show(disk["FileSystem"].ToString()); // Displays File system type   
  

Список всех доступных свойств Win32_LogicalDisk класса смотрите здесь.

Комментарии:

1. DriveInfo Функция представляет собой управляемую оболочку вокруг этой самой функции. Это означает, что действительно мало причин для P / Invoke и вызова функции самостоятельно.

2. @Cody Gray: Да, вы правы, но OP может захотеть прочитать серийный номер диска, насколько я знаю, это невозможно с DriveInfo