Один из вариантов - выполнить System.IO.Directory.GetParent () несколько раз. Есть ли более изящный способ перемещения на несколько папок вверх от того места, где находится исполняемая сборка?
Что я пытаюсь сделать, так это найти текстовый файл, который находится на одну папку над папкой приложения. Но сама сборка находится внутри корзины, то есть на несколько папок глубоко в папке приложения.
c#
.net
console-application
developer747
источник
источник
Directory.SetCurrentDirectory(@"..\..\..\..");
Ответы:
Другой простой способ - сделать это:
Примечание. Это идет на два уровня выше. Результат будет:
newPath = @"C:\Folder1\Folder2\";
источник
Path.Combine
любом случае нет смысла использовать, когда вы добавляете обратную косую черту вручную. Рассмотрите возможность использованияPath.Combine(path, "..", "..")
вместо этого.если c: \ folder1 \ folder2 \ folder3 \ bin - это путь, то следующий код вернет базовую папку пути к папке bin
т.е. c: \ folder1 \ folder2 \ folder3
если вам нужен путь к папке2, вы можете получить каталог с помощью
тогда вы получите путь как c: \ folder1 \ folder2 \
источник
Вы можете использовать
..\path
для перехода на один уровень вверх,..\..\path
для перехода на два уровня от пути.Вы
Path
тоже можете использовать класс.C # Path класс
источник
Вот что сработало для меня лучше всего:
string parentOfStartupPath = Path.GetFullPath(Path.Combine(Application.StartupPath, @"../"));
Получить «правильный» путь не было проблемой, очевидно, что добавление «../» делает это, но после этого данную строку нельзя будет использовать, потому что она просто добавит «../» в конце. Окружение
Path.GetFullPath()
даст вам абсолютный путь, что сделает его пригодным для использования.источник
Следующий метод выполняет поиск файла, начинающегося с пути запуска приложения (папка * .exe). Если файл там не найден, выполняется поиск в родительских папках, пока не будет найден файл или не будет достигнута корневая папка.
null
возвращается, если файл не был найден.Примечание:
Application.StartupPath
обычно используется в приложениях WinForms, но работает и в консольных приложениях; однако вам нужно будет указать ссылку наSystem.Windows.Forms
сборку. Вы можете заменитьApplication.StartupPath
на,Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)
если хотите.источник
Может быть, вы могли бы использовать функцию, если хотите объявить количество уровней и поместить его в функцию?
И вы могли бы назвать это так:
источник
C #
источник
это может помочь
источник
У меня есть несколько виртуальных каталогов, и я не могу использовать методы каталогов. Итак, я сделал простую функцию разделения / объединения для заинтересованных. Но не так безопасно.
Итак, если вы хотите переместиться на 4 выше, вам просто нужно изменить значение
1
на4
и добавить несколько проверок, чтобы избежать исключений.источник
Если вы знаете папку, к которой хотите перейти, найдите ее индекс и подстроку.
источник
a
, например? Что, если путь выглядит такC:\Folderame3\Folderame2\Folderame\...
?