Qual é a maneira mais simples de obter o diretório em que um arquivo está? Estou usando isso para definir um diretório de trabalho.
string filename = @"C:\MyDirectory\MyFile.bat";
Neste exemplo, eu deveria obter "C: \ MyDirectory".
Qual é a maneira mais simples de obter o diretório em que um arquivo está? Estou usando isso para definir um diretório de trabalho.
string filename = @"C:\MyDirectory\MyFile.bat";
Neste exemplo, eu deveria obter "C: \ MyDirectory".
Respostas:
Se você definitivamente tem um caminho absoluto, use Path.GetDirectoryName(path).
Se você pode obter apenas um nome relativo, use new FileInfo(path).Directory.FullName.
Observe que Pathe FileInfosão encontrados no espaço para nome System.IO.
new FileInfo(path).Directory.FullNamedeve funcionar em ambos os casos.
Você pode usar System.IO.Path.GetDirectory(filename)ou transformar o caminho em ae FileInfousar FileInfo.Directory.
Se você estiver fazendo outras coisas com o caminho, FileInfopode haver vantagens.
Se você estiver trabalhando com um FileInfoobjeto, existe uma maneira fácil de extrair uma stringrepresentação do caminho completo do diretório por meio da DirectoryNamepropriedade
Descrição da FileInfo.DirectoryNamepropriedade via MSDN:
Obtém uma string representando o caminho completo do diretório.
Uso da amostra:
string filename = @"C:\MyDirectory\MyFile.bat";
FileInfo fileInfo = new FileInfo(filename);
string directoryFullPath = fileInfo.DirectoryName; // contains "C:\MyDirectory"
Link para a documentação do MSDN .
Você pode obter o caminho do aplicativo atual usando:
string AssemblyPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location).ToString();
Boa sorte!
Você pode usar Path.GetFullPathna maioria dos casos. Mas se você deseja obter o caminho também no caso de o nome do arquivo estar relativamente localizado, use o método genérico abaixo:
string GetPath(string filePath)
{
return Path.GetDirectoryName(Path.GetFullPath(filePath))
}
Por exemplo:
GetPath("C:\Temp\Filename.txt") Retorna "C:\Temp\"
GetPath("Filename.txt")volte current working directorycomo"C:\Temp\"
No meu caso, eu precisava encontrar o nome do diretório de um caminho completo (de um diretório), então simplesmente:
var dirName = path.Split('\\').Last();
"C:\MyDirectory"e não MyDirectory. O conselho para usar métodos de manipulação de string é arriscado, existem muitas armadilhas, em vez disso, use Pathmétodos dedicados .
Path.GetDirectoryName (Context.Parameters ["assemblypath"])
Path.GetDirectoryNameé mencionado em muitas outras respostas (incluindo resposta aceita)
@"C:\MyDirectory\MyFile.bat"