2009-11-20 4 views
0

Я использую следующий код, чтобы получить логические диски:Получение логических дисков

string[] strDrives = Environment.GetLogicalDrives(); 

, но когда я хочу итерацию через него, происходит исключение, с сообщением:

Drive Not Ready 

Как я могу получить только готовые диски?

ответ

7

Используйте DriveInfo для определения готовности диска.

foreach (var oneDrive in strDrives) 
{ 
    var drive = new DriveInfo(oneDrive) 
    if (drive.IsReady) 
    { 
     // Do something with the drive... 
    } 
} 
+0

+1 Ай, что это гораздо лучше решение, чем моя! –

1

Это также может, конечно, быть достигнуто с помощью Linq:

IEnumerable<DriveInfo> readyDrives = Environment.GetLogicalDrives() 
    .Select(s => new DriveInfo(s)) 
    .Where(di => di.IsReady); 
0

Я просто склонны делать:

List<DriveInfo> driveInfo = new List<DriveInfo>(from drive in DriveInfo.GetDrives() where drive.IsReady select drive); 
Смежные вопросы