Uma opção seria fazer System.IO.Directory.GetParent () algumas vezes. Existe uma maneira mais elegante de subir algumas pastas de onde reside o assembly em execução?
O que estou tentando fazer é encontrar um arquivo de texto que resida em uma pasta acima da pasta do aplicativo. Mas o conjunto em si está dentro do bin, que fica a algumas pastas na pasta do aplicativo.
c#
.net
console-application
desenvolvedor747
fonte
fonte
Directory.SetCurrentDirectory(@"..\..\..\..");
Respostas:
Outra maneira simples é fazer isso:
Observação Isso sobe dois níveis. O resultado seria:
newPath = @"C:\Folder1\Folder2\";
fonte
Path.Combine
quando você está adicionando barra invertida manualmente de qualquer maneira. Considere usar em seuPath.Combine(path, "..", "..")
lugar.se c: \ pasta1 \ pasta2 \ pasta3 \ bin for o caminho, o código a seguir retornará o caminho da pasta base da pasta bin
ou seja, c: \ pasta1 \ pasta2 \ pasta3
se você quiser o caminho da pasta 2, poderá obter o diretório
então você obterá o caminho c: \ folder1 \ folder2 \
fonte
Você pode usar
..\path
para subir um nível,..\..\path
para subir dois níveis do caminho.Você também pode usar a
Path
classe.Classe C # Path
fonte
Isso é o que funcionou melhor para mim:
string parentOfStartupPath = Path.GetFullPath(Path.Combine(Application.StartupPath, @"../"));
Obter o caminho 'certo' não era o problema, adicionar '../' obviamente faz isso, mas depois disso, a string fornecida não pode ser usada, porque vai apenas adicionar '../' no final. Circundá-lo com
Path.GetFullPath()
lhe dará o caminho absoluto, tornando-o utilizável.fonte
O método a seguir pesquisa um arquivo que começa com o caminho de inicialização do aplicativo (pasta * .exe). Se o arquivo não for encontrado lá, as pastas pai serão pesquisadas até que o arquivo seja encontrado ou a pasta raiz seja alcançada.
null
é retornado se o arquivo não foi encontrado.Nota:
Application.StartupPath
geralmente é usado em aplicativos WinForms, mas também funciona em aplicativos de console; entretanto, você terá que definir uma referência para aSystem.Windows.Forms
montagem. Você pode substituirApplication.StartupPath
porPath.GetDirectoryName(Assembly.GetExecutingAssembly().Location)
se preferir.fonte
Talvez você possa usar uma função se quiser declarar o número de níveis e colocá-lo em uma função?
E você poderia chamá-lo assim:
fonte
C #
fonte
isso pode ajudar
fonte
Tenho alguns diretórios virtuais e não consigo usar os métodos de diretório. Então, fiz uma função simples de dividir / juntar para os interessados. Embora não seja tão seguro.
Então, se você quiser mover 4 para cima, você só precisa alterar o
1
para4
e adicionar algumas verificações para evitar exceções.fonte
Se você souber a pasta para a qual deseja navegar, encontre o índice dela e depois a substring.
fonte
a
, por exemplo? E se o caminho for assimC:\Folderame3\Folderame2\Folderame\...
?