次のコードを使用して、論理ドライブを取得します。
string[] strDrives = Environment.GetLogicalDrives();
しかし、それを反復したい場合、例外が発生し、次のメッセージが表示されます。
Drive Not Ready
準備完了のドライブを入手するにはどうすればよいですか?
DriveInfo を使用して、ドライブの準備ができているかどうかを判断します。
foreach (var oneDrive in strDrives)
{
var drive = new DriveInfo(oneDrive)
if (drive.IsReady)
{
// Do something with the drive...
}
}
もちろん、これは Linq を使用して実現することもできます。
IEnumerable<DriveInfo> readyDrives = Environment.GetLogicalDrives()
.Select(s => new DriveInfo(s))
.Where(di => di.IsReady);