2013-11-19 2 views
8

Написание кода на C#, мне было интересно, есть ли способ получить правильный путь к объекту directoryinfo?Получить путь к объекту directoryinfo

В настоящее время у меня есть, например, каталог, такие как:

DirectoryInfo dirInfo = new DirectoryInfo(pathToDirectory); 

Вопрос заключается в том, что, если я хочу, чтобы получить путь к этому конкретному dirInfo объекта, он всегда возвращает отлаживать путь (папка Bin) , Если исходный объект dirInfo ссылается на каталог в пути D:\testDirectory, то я хочу, чтобы этот путь возвращался в другом месте вместо кода \bin\debug\testDirectory

Есть ли способ сделать это?

В настоящее время я пытаюсь получить путь dirInfo с помощью Path:

Console.WriteLine("Path: " + Path.GetFullPath(dirInfo.ToString())); 
+1

Что такое PathToDirectory? Это D: \ testDirectory или путь отладки? –

+0

как вы получаете путь для 'dirInfo'? – Habib

+0

Можете ли вы показать код, который вы используете, чтобы получить «путь к« Справочной информации »? И для примера кода попытайтесь использовать постоянные значения, где это возможно (то есть, что такое значение 'pathToDirectory', когда ваш код не работает) –

ответ

25

Попробуйте это.

string pathToDirctory = "D:\\testDirectory"; 
DirectoryInfo dirInfo = new DirectoryInfo(pathToDirctory); 
string path = dirInfo.FullName; 
Console.WriteLine(path); 
+0

Это сработало!плохо согласен с ответом в течение 6 минут – user1806716

+0

@ user1806716 - обратите внимание, что этот код ведет себя точно так же, как и код, который, по вашему утверждению, имеет - [DirectoryInfoToString()] (http://msdn.microsoft.com/en-us/library/system .io.directoryinfo.tostring (v = vs.110) .aspx) «Возвращает исходный путь, который был передан пользователем». –

+0

@AlexeiLevenkov: Я думаю, что OP отправляет относительный путь «testDirectory», поэтому он добавляется к текущему пути (папка dubug). –

3

A DirectoryInfo представляет собой конкретный каталог. Когда вы создаете его, какой каталог он представляет, зависит от пути, который вы ему даете. Если вы дадите ему абсолютный путь, как c:\foo\bar\baz\bat, это каталог, который вы получаете. Если, с другой стороны, вы даете ему относительный путь, например foo\bar\baz\bat, путь относительно процесса 'текущий рабочий каталог. По умолчанию это унаследовано от процесса, который породил текущий процесс. Visual Studio запускает сеанс отладки и устанавливает CWD процесса, отлаживаемого в его каталог bin. Поэтому, если вы создадите DirectoryInfo и дадите ему путь, как testDirectory, вы получите DirectoryInfo около [project-root]\bin\Debug\testDirectory.

Если вы хотите абсолютный путь, вам нужно будет указать этот абсолютный путь. Нет ярлыков.

+0

Nice Explanation. –

+0

, так что здесь OP должен давать относительный путь к DirectoryInfo вместо абсолютного пути, поэтому он получает путь как => projectfolder/bin/debug/DitestDirectory правильно? –