与System.IO.Directory.GetDirectories的奇怪

时间:2011-05-16 01:52:56

标签: .net filesystems directory-structure

我做的目录搜索可能会引起一些人的兴趣。

我在Windows XP机器上找到了

System.IO.Directory.GetDirectories(“C:\”)给了我17个文件夹

System.IO.Directory.GetDirectories(“C:”)给了我17个文件夹

System.IO.Directory.GetDirectories(“D:\”)给了我12个文件夹

System.IO.Directory.GetDirectories(“D:”)给了我0个文件夹

我试图找出为什么我的搜索错过了我的D盘。

3 个答案:

答案 0 :(得分:2)

我的猜测是GetDirectories("D:")为您提供D驱动器的当前目录中的目录列表,而GetDirectories("D:\")为您提供 root 。

如果D驱动器的根目录有12个目录且当前目录位于D驱动器上并且没有目录,那么这些是您应该期望的结果。

答案 1 :(得分:2)

Windows历史上提供了与DOS的向后兼容性,DOS处理的路径只包含一个没有目录的驱动器号作为驱动器“当前目录”的引用。但由于每个驱动器实际上没有当前目录(cmd.exe模拟了这个,根据Raymond Chen),我的猜测是它没有返回任何内容,因为进程的当前目录位于C:驱动器上。尝试将Environment.CurrentDirectory设置为D:\,然后查看是否得到相同的结果。

答案 2 :(得分:0)

驱动器D的当前目录是什么?:

这不是根源。