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 Path
e FileInfo
são encontrados no espaço para nome System.IO
.
new FileInfo(path).Directory.FullName
deve funcionar em ambos os casos.
Você pode usar System.IO.Path.GetDirectory(filename)
ou transformar o caminho em ae FileInfo
usar FileInfo.Directory
.
Se você estiver fazendo outras coisas com o caminho, FileInfo
pode haver vantagens.
Se você estiver trabalhando com um FileInfo
objeto, existe uma maneira fácil de extrair uma string
representação do caminho completo do diretório por meio da DirectoryName
propriedade
Descrição da FileInfo.DirectoryName
propriedade 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.GetFullPath
na 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 directory
como"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 Path
métodos dedicados .
Path.GetDirectoryName (Context.Parameters ["assemblypath"])
Path.GetDirectoryName
é mencionado em muitas outras respostas (incluindo resposta aceita)
@"C:\MyDirectory\MyFile.bat"