【问题标题】:Get drive letter from USB via VolumeLabel通过 VolumeLabel 从 USB 获取驱动器号
【发布时间】:2015-04-17 19:34:50
【问题描述】:

我认为这很简单。我需要到 USB 的路径,但由于我不知道它会被分配哪个字母,我想我只是使用不会改变的卷标。这是我的简单代码:

 var alldrives = DriveInfo.GetDrives();
 string destd = alldrives.Where(x => x.VolumeLabel.Equals("UB64")).First().Name;

即使插入了 USB,这也会引发 Io 异常(设备不可用)。有人可以告诉我为什么吗?

在我看来,这与完整列表不同,因为我已经有了一种地址,只需要转换为完整路径,而不是从头开始。

【问题讨论】:

标签: c#


【解决方案1】:

克里斯为我指出了正确的答案。如果它可以帮助其他人,那就是:

var alldrives = DriveInfo.GetDrives();
string destd="";
foreach (var drvs in alldrives)
{
    try
    {
          if (drvs.VolumeLabel.Equals("UB64"))
              destd = drvs.Name;
              break;
     }
     catch
     {
        continue;
     }
}

即不是 USB 导致错误...

【讨论】:

  • 或者简化:var destd = DriveInfo.GetDrives().Single( d => d.IsReady && d.VolumeLabel == "UB64" ).Name; 如果没有这样的驱动器,那将会非常糟糕。
  • 或者如果有不止一个,同样如此。
猜你喜欢
  • 1970-01-01
  • 2012-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-28
  • 1970-01-01
  • 2011-10-02
  • 2022-11-01
相关资源
最近更新 更多