Странность с System.IO.Directory.GetDirectories - PullRequest
0 голосов
/ 16 мая 2011

Просто то, что я заметил сегодня, когда выполнял поиск в каталоге, что могло бы сбить с толку некоторых людей.

Я обнаружил на своей машине с 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 ]

2 голосов
/ 16 мая 2011

Windows исторически обеспечивала обратную совместимость с DOS, которая трактовала пути, содержащие только букву диска без каталога, как ссылку на «текущий каталог» диска. Но поскольку на каждом диске нет текущего каталога (смоделированный cmd.exe, согласно Raymond Chen ), я предполагаю, что он ничего не возвращает, потому что текущий каталог процесса находится на диске C: , Попробуйте установить для Environment.CurrentDirectory значение D: \, а затем посмотрите, получите ли вы те же результаты.

2 голосов
/ 16 мая 2011

Я предполагаю, что GetDirectories("D:") дает вам список каталогов в текущем каталоге вашего диска D, а GetDirectories("D:\") дает вам список каталогов в root .вашего диска D.

Если корень вашего диска D имеет 12 каталогов, а текущий каталог находится на вашем диске D и в нем нет каталогов, это результаты, которые вы должны ожидать.

0 голосов
/ 16 мая 2011

Каков текущий каталог диска D:?

Это не рут.

...