Как обнаружить USB-накопители и записываемые приводы CD/DVD (C#)
Вопрос
Как я могу обнаружить любые USB-накопители и/или устройства записи CD/DVD, доступные в данный момент (с использованием C#.Net2.0).
Я хотел бы предоставить пользователям выбор устройств, на которых можно сохранить файл для физического удаления, т.е.не жесткий диск.
Решение
using System.IO;
DriveInfo[] allDrives = DriveInfo.GetDrives();
foreach (DriveInfo d in allDrives)
{
if (d.IsReady && d.DriveType == DriveType.Removable)
{
// This is the drive you want...
}
}
Документация класса DriveInfo находится здесь:
http://msdn.microsoft.com/en-us/library/system.io.driveinfo.aspx
Другие советы
это код VB.NET для проверки наличия любых съемных дисков или приводов CDRom, подключенных к компьютеру:
Me.lstDrives.Items.Clear()
For Each item As DriveInfo In My.Computer.FileSystem.Drives
If item.DriveType = DriveType.Removable Or item.DriveType = DriveType.CDRom Then
Me.lstDrives.Items.Add(item.Name)
End If
Next
не составит труда изменить этот код в эквивалент C# и многое другое. Тип вождениядоступны.
Из MSDN:
- Неизвестный: Тип привода неизвестен.
- Норутдиректори: Диск не имеет корневого каталога.
- Съемный: Диск представляет собой съемное запоминающее устройство, например дисковод гибких дисков или флэш-накопитель USB.
- Зафиксированный: Привод представляет собой фиксированный диск.
- Сеть: Диск является сетевым.
- Компакт-диск: Привод представляет собой устройство оптического диска, например компакт-диск или DVD-ROM.
- Баран: Дисковод представляет собой RAM-диск.
в С# вы можете получить то же самое, используя класс System.IO.DriveInfo
using System.IO;
public static class GetDrives
{
public static IEnumerable<DriveInfo> GetCDDVDAndRemovableDevices()
{
return DriveInfo.GetDrives().
Where(d => d.DriveType == DriveType.Removable
&& d.DriveType == DriveType.CDRom);
}
}
Это полный модуль для VB.NET:
Импортирует System.IO
Модуль GetDriveNamesByType
Функция GetDriveNames (необязательно ByVal DType As DriveType = DriveType.Removable) As ListBox
Для каждого DN как System.IO.DriveInfo в My.Computer.FileSystem.Drives
Если DN.DriveType = DType Тогда
GetDriveNames.Items.Add(DN.Name)
Конец, если
Следующий
Конечная функция
Конечный модуль
'Drive Types <br>
'Unknown: The type of drive is unknown. <br>
'NoRootDirectory: The drive does not have a root directory. <br>
'Removable: The drive is a removable storage device, such as a floppy disk drive or a USB flash drive. <br>
'Fixed: The drive is a fixed disk. <br>
'Network: The drive is a network drive. <br>
'CDRom: The drive is an optical disc device, such as a CD or DVD-ROM. <br>
'Ram: The drive is a RAM disk. <br>