c # почему, когда путь "C:", directoryInfo переводит меня в папку приложения? - PullRequest
5 голосов
/ 03 февраля 2012

Почему, когда я указываю путь "c:", он менял меня прямо в папку приложения?

    static void Main(string[] args)
    {
        DirectoryInfo dir = new DirectoryInfo("c:");
        Console.WriteLine(dir.FullName);
        Console.ReadLine();
    }

Вывод следующий:

c: \ users ... \ Documents \ visual studio 2010 \ проекты \ consoleApplication9 \ Bin \ Debug

Но когда я даю @"c:\", он идет на диск c: несмотря на это "d:" и @"d:\" выводит на диск d:.

Так что мне нужен способ, чтобы "c:" занял диск c:

Заранее спасибо!

Ответы [ 4 ]

15 голосов
/ 03 февраля 2012

Просто "c:" означает «текущий каталог на диске C», тогда как @"c:\" означает «корень диска C». Это работает так же из командной строки ...

6 голосов
/ 03 февраля 2012

C: это просто спецификатор тома, поэтому он изменит ваш текущий путь на томе, который будет рабочим путем приложения.

D: приведет вас к корню просто потому, что ваша текущая папкадля этого тома оказывается в корне.

2 голосов
/ 03 февраля 2012
static void Main(string[] args) 
    { 
        string YourDir = "c:";

        if (!YourDir.Substring(YourDir.Length - 1, 1).Equals(@"\"))
            YourDir += @"\";
        DirectoryInfo dir = new DirectoryInfo(YourDir); 
        Console.WriteLine(dir.FullName); 
        Console.ReadLine(); 
    } 
0 голосов
/ 03 февраля 2012

enter image description here

Используйте следующее

  static void Main(string[] args)
  {          
      DirectoryInfo dir = new DirectoryInfo(@"c:\");
      Console.WriteLine(dir.FullName);
      Console.ReadLine();
  }       

Базовый каталог в то время, когда вы выполняете c: приложение не понимает этого, поэтому возвращает каталог, из которого приложение было запущено / запущено.

Обратите внимание, что dir = {.} Если бы вы указали буквальный путь к каталогу, вы бы получили ожидаемые результаты ..

...