Как получить букву диска из полного названия диска

Как можно получить букву диска (например, F:\) из известного полного имени (если оно присутствует) диска (например, WORKMEMORYSTICK) с использованием C# под Windows?

Даже обратное было бы началом.

2 ответа

Решение

DriveInfo класс предоставляет метод для получения всех доступных дисков (GetDrives), вы можете перечислить эти совпадения в соответствии с заданной строкой. Что-то вроде следующего должно помочь вам туда добраться:

DirectoryInfo root;
var drives = DriveInfo.GetDrives();
foreach (var drive in drives)
{
    if (drive.VolumeLabel == label)
    {
        root = drive.RootDirectory;
        break;
    }
}

Как упомянул Абатищев, и который изначально не разрабатывался из-за требований времени моих детей, существует потенциальная проблема в том, что вы подходите только для первого диска с таким ярлыком, поэтому вам нужно будет учесть это в ваша логика, если ваша система требует этого (хотя определение того, какой из двух дисков является желаемым диском, основанный только на неуникальной строке, не лучше, чем предположение или, как я упоминаю ниже, вопрос пользователю (если это ввод) какой они имели ввиду.)

Вы можете прокрутить все диски и проверить свойства Name и VolumeLabel объекта DriveInfo.

Посмотрите этот вопрос для примеров кода (используется для получения буквы USB-диска, но вы можете легко адаптировать его):

Как найти букву USB-накопителя?

Извините, я не могу предоставить вам код, но я сейчас на Mac:)

Другие вопросы по тегам