2011-08-28 83 views

回答

2

DriveInfo类公开了一种获取所有可用驱动器的方法(GetDrives),您可以枚举这些匹配给定的字符串。像下面的内容应该可以帮助你那里:

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

正如abatishchev提到了,最初没有详细阐述了由于我的孩子们的时间要求,所以存在一个潜在的问题,你只打算符合其中有该标签的第一驱动,因此,你需要在你的逻辑考虑到这一点,如果你的系统需要它(不过,确定这两个驱动器是基于什么,但非唯一的字符串所需的驱动器没有比猜测更好,或者正如我在下面提到的那样,询问用户(如果是输入的话)他们意味着哪一个。)

+0

这不是'GetPathRoot()'的作用。 OP正在讨论如何找到与卷标相对应的驱动器盘符。 – cdhowie

+0

@cdhowie:刚刚意识到......我的错误。 –

+0

但是如果多于一个驱动器具有相同的标签呢? – abatishchev

2

您可以遍历所有驱动器并检查Name和VolumeLabel properties of DriveInfo object

见代码示例这个问题(用来获取USB驱动器盘符,但你可以轻松适应它):

How to find USB drive letter?

对不起,我不能为你提供了一些代码,但我在一个Mac现在:)

+0

但是如果多于一个驱动器具有相同的标签呢? – abatishchev