Объединение Environment.CurrentDirectory с обратным путем

Если у меня следующая структура каталогов:

Проект1 / bin / debug
Project2 / xml / file.xml

Я пытаюсь сослаться на file.xml из каталога Project1 / bin / debug

По сути, я пытаюсь сделать следующее:

string path = Environment.CurrentDirectory + @"..\..\Project2\xml\File.xml":

каков правильный синтаксис для этого?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
5
0
8 393
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Использовать:

System.IO.Path.GetFullPath(@"..\..\Project2\xml\File.xml")
Ответ принят как подходящий

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

string path = System.IO.Path.Combine(Environment.CurrentDirectory, 
                                     @"..\..\..\Project2\xml\File.xml");

Это переводится как .. \ Project1 \ bin \ debug \ .. \ .. \ Project2 \ ... Если вы подумаете о ".." просто съесть предыдущий каталог в пути, вы получите .. \ Project1 \ Project2 \. ..

tvanfosson 06.12.2008 16:08

Достаточно верно. Я не считал ak's .. 's - решил, что это было из-за отсутствия начального "\", которое их убивало. Поправлюсь.

Blair Conrad 07.12.2008 04:37

У меня тоже сработало.

Deepak Kumar 04.08.2016 12:30
string path = Path.Combine( Environment.CurrentDirectory,
                            @"..\..\..\Project2\xml\File.xml" );

Один ".." переносит вас в корзину

Следующее ".." перенесет вас в Project1.

Далее ".." приведет вас к родительскому элементу Project1.

Затем до файла

На самом деле я предпочитаю версию @lubos, но с правильным путем к файлу.

tvanfosson 06.12.2008 16:12

Обратите внимание, что использование Path.Combine () может не дать ожидаемого результата, например:

string path = System.IO.Path.Combine(@"c:\dir1\dir2",
                                     @"..\..\Project2\xml\File.xml");

В результате получается следующая строка:

@"c:\dir1\dir2\dir3\..\..\Project2\xml\File.xml"

Если вы ожидаете, что путь будет "c: \ dir1 \ Project2 \ xml \ File.xml", вы можете использовать такой метод вместо Path.Combine ():

public static string CombinePaths(string rootPath, string relativePath)
{
    DirectoryInfo dir = new DirectoryInfo(rootPath);
    while (relativePath.StartsWith("..\\"))
    {
        dir = dir.Parent;
        relativePath = relativePath.Substring(3);
    }
    return Path.Combine(dir.FullName, relativePath);
}

Но как насчет ".. \" не в начале relativePath? Это все еще действительный путь. Я бы предпочел использовать System.IO.Path.GetFullPath для преобразования относительных путей в абсолютные.

Dirk Vollmar 06.12.2008 16:48

<продолжение /> или использование классов DirectoryInfo и FileInfo также может быть вариантом.

Dirk Vollmar 06.12.2008 16:51

Другие вопросы по теме