当我尝试访问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:\”。但是我没有因为困惑而提出任何错误。
答案 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:\