【问题标题】:Path.GetFullPath unexpected behavior on "DriveLetter:SomeDirectory"“DriveLetter:SomeDirectory”上的 Path.GetFullPath 意外行为
【发布时间】:2016-02-11 10:05:14
【问题描述】:

我正在尝试按照this 答案中的建议使用Path 类来获取目录路径是否有效。

但是,虽然我希望 Path.GetFullName("C:SomeDirectory")(没有任何斜杠)会引发异常,但它会返回 C:\Windows\system32\SomeDirectory

另外,如果我写Directory.Create("C:SomeDirectory"),它会尝试在C:\Windows\system32 下再次创建目录。

当我尝试输入 C:drivers 时,例如,在 Windows 资源管理器中的地址栏中,我收到错误 Windows cannot find file. Check the spelling and try again.

命令行在cd C:drivers 上也报错。

这是预期的行为吗?

【问题讨论】:

  • cd 到c:\windows\system32 然后尝试cd c:drivers。一切都会奏效。更奇怪的是,如果你例如映射 f: 驱动器,然后执行 cd c:\windows\system32f:cd c:driversc:,你最终会出现在 c:\windows\system32\drivers

标签: c# path


【解决方案1】:

是的,C:只是告诉它哪个驱动器。如果您希望路径从 root 运行,则路径的其余部分必须以 root '\' 开头 - 否则它将被附加到当前目录。

Path 和 Uri 方法对这些事情非常具体。

所有路径都相对于当前工作目录 - 但以 \ 开头的路径使其相对于(该驱动器的)根目录 - 在命令行上也是如此

【讨论】:

  • 好的,但是为什么这在 Windows 资源管理器或命令行中不起作用?
  • 对,当我在命令行上写cd C:Default,而当前目录是C:\Users,它转到C:\Users\Default
  • 是的 - 就是这样。
猜你喜欢
  • 1970-01-01
  • 2020-02-21
  • 1970-01-01
  • 1970-01-01
  • 2017-10-23
  • 1970-01-01
  • 2012-01-08
  • 2011-03-23
  • 2018-02-02
相关资源
最近更新 更多