在C#中没有'\'(反斜杠)访问子目录

时间:2011-09-09 19:21:40

标签: c# path drive getdirectories

当我尝试访问c:drive:

的子目录时,我遇到了一个奇怪的情况

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

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

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

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

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

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

它检索所有子目录。

谁能解释为什么会发生这种情况?


非常感谢你们。现在我明白了“c:”返回当前目录而不是root “c:\”。但是我没有因为困惑而提出任何错误。

2 个答案:

答案 0 :(得分:5)

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

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


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

答案 1 :(得分:5)

我的猜测是它将“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:\