Чтение информации о дисках
79C# и .NET --- Многопоточность и файлы --- Чтение информации о дисках
Помимо работы с файлами и каталогами, в .NET Framework предоставляется возможность читать информацию об указанном диске. Для этого предусмотрен класс DriveInfo. Этот класс умеет производить сканирование системы и составлять список всех доступных в ней дисков, а также детальные сведения о любом из них.
Рассмотрим пример применения класса DriveInfo, создав простое приложение WPF, которое будет отображать перечень всех доступных дисков на компьютере и предоставлять подробную информацию о любом из них. Приложение должно включать в себя простой элемент управления ListBox. Используйте следующую разметку:
<Window x:Class="DriverInfo.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Информация о дисках" Height="350" Width="525" Loaded="Window_Loaded">
<StackPanel Margin="5">
<TextBlock>Найденные диски:</TextBlock>
<ListBox x:Name="lbx" SelectionChanged="lbx_SelectionChanged" Margin="0,5,0,5"
Padding="5"></ListBox>
<TextBlock>Информация о диске: </TextBlock>
<TextBox TextWrapping="Wrap" x:Name="txt" VerticalScrollBarVisibility="Auto"
Padding="5" Margin="0,5,0,5" MaxHeight="150"></TextBox>
</StackPanel>
</Window>
После подготовки код формы будет содержать обработчики двух событий: загрузка окна и выбор пользователем в списке определенного диска:
using System;
using System.IO;
using System.Windows;
using System.Windows.Controls;
namespace DriverInfo
{
///
/// Логика взаимодействия для MainWindow.xaml
///
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
DriveInfo[] di = DriveInfo.GetDrives();
foreach (DriveInfo d in di)
lbx.Items.Add(d.Name);
}
private void lbx_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
txt.Text = "";
DriveInfo di = new DriveInfo(lbx.SelectedItem.ToString());
txt.Text = "Свободное пространство: " + di.AvailableFreeSpace / 1024 / 1024 + "Mb\n"
+ "Общий размер: " + di.TotalSize + "\n"
+ "Формат устройства: " + di.DriveFormat + "\n"
+ "Тип устройства: " + di.DriveType + "\n"
+ "Готовность: " + di.IsReady + "\n"
+ "Имя " + di.Name
+ "\nКорневой каталог: " + di.RootDirectory +
"\nМетка тома: " + di.VolumeLabel;
}
}
}
Здесь первым делом с помощью ключевого слова using добавляется пространство имен System.IO. Затем в рамках события Window_Loaded используется класс DriveInfo для получения списка всех доступных дисков в системе. Получается этот список за счет создания массива объектов DriveInfo и его заполнения методом DriveInfo.GetDrives(). Далее с помощью цикла foreach производится проход по всем обнаруженным дискам с заполнением элемента ListBox результатами.
Пользователь может выбирать в списке любой диск. После выбора детальные сведения о диске появляются в текстовом поле.