Как обнаружить устройства хранения USB и перезаписываемый CD/DVD-приводы (C#)

Другое событие NullPointerException возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.

String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals для гарантированного непустого объекта.

Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null.

Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.

String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

5
задан Stuart Helwig 9 September 2008 в 11:28
поделиться

3 ответа

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

9
ответ дан 13 December 2019 в 19:39
поделиться

в c# можно получить то же при помощи Системы. Класс 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);
    }

}
1
ответ дан 13 December 2019 в 19:39
поделиться

это - код VB.NET для проверки на любые съемные диски или Дисководы для компакт-дисков, подключенные к компьютеру:

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# эквивалент, и больше driveType's доступны.
Из MSDN:

  • Неизвестный: тип диска неизвестен.
  • NoRootDirectory: диск не имеет корневого каталога.
  • Съемный: диск является съемным устройством хранения, таким как дисковод для гибких дисков или карта флэш-памяти с интерфейсом USB.
  • Зафиксированный: диск является жестким диском.
  • Сеть: диск является сетевым диском.
  • CD-ROM: диск является устройством оптического диска, таким как CD или DVD-ROM.
  • Поршень: диск является псевдодиском.
1
ответ дан 13 December 2019 в 19:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: