2009-11-20 10 views
0

J'utilise le code suivant pour obtenir des unités logiques:Obtenir des unités logiques

string[] strDrives = Environment.GetLogicalDrives(); 

mais quand je veux itérer à travers elle, une exception se produit, avec le message:

Drive Not Ready 

Comment puis-je obtenir juste des lecteurs prêts?

Répondre

7

Utilisez DriveInfo pour déterminer si le lecteur est prêt.

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

+1 ah- c'est la solution beaucoup plus agréable que la mienne! –

1

Cela peut aussi, bien sûr, être réalisé en utilisant Linq:

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

je tends simplement à faire:

List<DriveInfo> driveInfo = new List<DriveInfo>(from drive in DriveInfo.GetDrives() where drive.IsReady select drive);