【问题标题】:Creating DirectoryInfo object for drive root [duplicate]为驱动器根目录创建 DirectoryInfo 对象 [重复]
【发布时间】:2017-12-23 20:41:01
【问题描述】:

在 C# 程序中,我正在创建 DirectoryInfo 的实例。通常,它似乎不需要在目录名称后加上斜杠。但是如果我传入“C:”,而不是获取我的硬盘驱动器的根目录,我会得到我的可执行文件所在的目录!这当然看起来像一个错误,但是否有一些我遗漏的隐藏行为?

【问题讨论】:

  • 查看@JonSkeet 的回答here
  • GazTheDestroyer 很好地解释了另一个问题,结果证明是相同的:C: 只是卷说明符,因此它将更改为您在该卷上的当前路径,这将是应用程序。 D:将您带到根目录只是因为您当前的该卷的文件夹恰好位于根目录下。

标签: c# .net directory


【解决方案1】:

文档中没有明确指出,但仅使用 (drive): 未列为有效路径规范。

您所看到的行为是已实现的,正如您从 .NET 源代码中看到的那样:

http://referencesource.microsoft.com/#mscorlib/system/io/directoryinfo.cs,90

Init 方法(从构造函数调用)会检查这种情况,如果找到,则使用当前工作目录(“.”)代替。根据您启动 EXE 的方式,当前工作目录可能是 EXE 的位置。

【讨论】:

  • 好的,投票赞成你的答案。但是任何想法为什么“:”应该是一个特殊情况,改为指向“”?似乎“C:\”应该被视为与“C:”一样
  • 我想(它已经出现在其他问题中)它是从命令提示符中模仿 CD 的行为。 > cd c: 不会更改为 C: 驱动器的根目录。它告诉您当前工作目录在 C 驱动器上的位置。要移动到根目录,您必须 CD C:\
猜你喜欢
  • 1970-01-01
  • 2011-02-12
  • 2019-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-21
  • 2011-10-01
相关资源
最近更新 更多