faz*_*faz 3 c# path getdirectories drive
当我尝试访问我的c:驱动器的子目录时,我有一个奇怪的情况:
首先我尝试了以下代码,输出为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:\".但我没有得到任何错误,如所提到的那样.
\是一个逃脱角色.在字符串中
\"插入一个"字符,而不终止字符串文字(例如"I have a \"quoted\" word!")
使用文字字符串:@"C:\"; 这些文字忽略转义字符.
C:没有a 的路径\指的是C驱动器中的当前目录,这不一定C:\(每个驱动器都有自己的当前目录).
我的猜测是它将"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:\
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
751 次 |
| 最近记录: |