【问题标题】:Can not access sub directories without '\' (backward slash) in C#在 C# 中无法访问没有“\”(反斜杠)的子目录
【发布时间】:2011-09-09 19:21:39
【问题描述】:

我在尝试访问我的 c: 驱动器的子目录时遇到了一个奇怪的情况:

首先我尝试了以下代码,输出为 0(零):

MessageBox.Show(new DirectoryInfo("c:").GetDirectories().Length.ToString());

但是当添加'\'到路径(c:)时,它显示了c:驱动器中子文件夹的确切数量。

MessageBox.Show(new DirectoryInfo("c:\\").GetDirectories().Length.ToString());

但尝试了另一个驱动器 (d:),例如:

MessageBox.Show(new DirectoryInfo("d:").GetDirectories().Length.ToString());

它检索所有子目录。

谁能解释为什么会这样?


谢谢各位。现在我明白了只是 "c:" 返回当前目录而不是 root "c:\"。但我没有收到任何困惑提到的错误。

【问题讨论】:

  • 我希望你在第二个例子中转义了`\`。
  • 当您只使用 C: 时,您实际上会获得该驱动器的默认目录。这是相当随机的。

标签: c# path drive getdirectories


【解决方案1】:

我的猜测是它将“c:”解释为 c: 驱动器上的当前环境文件夹,它没有子文件夹。但是,当您指定与正在执行的驱动器不同的驱动器 ("d:") 时,它默认为该驱动器的根目录。

应该很容易检查 - 比较 DirectoryInfo("c:") 和 DirectoryInfo("c:\") 的完整路径

Console.WriteLine(new System.IO.DirectoryInfo(@"c:").FullName);

>> c:\project\test\bin\debug

Console.WriteLine(new System.IO.DirectoryInfo(@"c:\").FullName);

>> c:\

【讨论】:

    【解决方案2】:

    \ 是一个转义字符。
    \" 在字符串中插入一个" 字符,而不终止字符串文字(例如,"I have a \"quoted\" word!"

    使用文字字符串:@"C:\";这些文字忽略转义字符。


    不带\ 的路径C: 指的是C 驱动器中的当前目录,不一定是C:\ (each drive has its own current directory)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-21
      • 2012-10-13
      • 2020-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-24
      • 1970-01-01
      相关资源
      最近更新 更多