【发布时间】:2019-03-14 07:40:19
【问题描述】:
我正在处理可能在 .NET 或 Mono 上运行的 C# 代码中的文件和目录路径字符串。
我想确定给定的路径字符串是否可以是驱动器(无论当前系统上是否存在映射到该路径的实际驱动器)。
例如,考虑字符串"m:"。在某些环境(例如 Windows)中,这表示一个驱动器,而在其他环境中,它可能是一个常用的目录名称。
除非我想对操作系统的检查进行硬编码1,我怎样才能发现(wlog)"m:" 表示 Windows 中的驱动器(最好甚至找到这个驱动器实际上叫"m")?
1:显然,这种检查注定会失败。
【问题讨论】:
-
DriveInfo 可能会有所帮助。
-
@Filburt:这看起来很有希望。我没有考虑过那个类,因为在文档中它确实不能用于不存在的驱动器。我将不得不检查该方法在 Linux 系统上的具体作用。
-
@Filburt:不幸的是,如果驱动器不存在,Mono's
DriveInfoimplementation 似乎会抛出一个ArgumentException。虽然这与 .NET 的做法相反,但 docs 足够模糊(“driveName不指代有效的驱动器”,没有任何说明“有效”是指“理论上有效作为标识符”还是“具体存在于当前系统上") 以允许这种解释。 -
我已经怀疑这可能会导致异常驱动的程序流,这当然是不可取的。
-
@Filburt:如果它允许异常驱动的程序流就好了,但正如我所描述的,Mono 的行为甚至不允许这样做。