Respostas:
Consulte DirectoryInfo.Name :
string dirName = new DirectoryInfo(@"c:\projects\roott\wsdlproj\devlop\beta2\text").Name;
Acho que você deseja obter o nome da pasta pai do caminho do arquivo. É fácil conseguir. Uma maneira é criar um FileInfo
objeto de tipo e usar sua Directory
propriedade.
Exemplo:
FileInfo fInfo = new FileInfo("c:\projects\roott\wsdlproj\devlop\beta2\text\abc.txt");
String dirName = fInfo.Directory.Name;
Tente isto
var myFolderName = @"c:\projects\roott\wsdlproj\devlop\beta2\text";
var result = Path.GetFileName(myFolderName);
@"c:\projects\roott\wsdlproj\devlop\beta2\text\"
Você pode usar isto:
string path = @"c:\projects\roott\wsdlproj\devlop\beta2\text";
string lastDirectory = path.Split(new char[] { System.IO.Path.DirectorySeparatorChar }, StringSplitOptions.RemoveEmptyEntries).Last();
StringSplitOptions.RemoveEmptyEntries
faz o truque.
Basta usar Path.GetFileName
Aqui - Extraia o nome da pasta do caminho completo de uma pasta:
string folderName = Path.GetFileName(@"c:\projects\root\wsdlproj\devlop\beta2\text");//Return "text"
Aqui estão alguns extras - Extraia o nome da pasta do caminho completo de um arquivo:
string folderName = Path.GetFileName(Path.GetDirectoryName(@"c:\projects\root\wsdlproj\devlop\beta2\text\GTA.exe"));//Return "text"
Percebi que não há outra maneira a não ser acessar o sistema de arquivos para descobrir se text.txt é um diretório ou apenas um arquivo. Se você queria algo simples, talvez você possa apenas usar:
s.Substring(s.LastIndexOf(@"\"));
Aqui está um método alternativo que funcionou para mim sem precisar criar um objeto DirectoryInfo. O ponto principal é que GetFileName()
funciona quando não há nenhuma barra final no caminho.
var name = Path.GetFileName(path.TrimEnd(Path.DirectorySeparatorChar));
Exemplo:
var list = Directory.EnumerateDirectories(path, "*")
.Select(p => new
{
id = "id_" + p.GetHashCode().ToString("x"),
text = Path.GetFileName(p.TrimEnd(Path.DirectorySeparatorChar)),
icon = "fa fa-folder",
children = true
})
.Distinct()
.OrderBy(p => p.text);
Isso também pode ser feito assim;
var directoryName = System.IO.Path.GetFileName(@"c:\projects\roott\wsdlproj\devlop\beta2\text");
Com base em respostas anteriores (mas corrigidas)
using static System.IO.Path;
var dir = GetFileName(path?.TrimEnd(DirectorySeparatorChar, AltDirectorySeparatorChar));
Explicação dos GetFileName
de fonte .NET :
Retorna o nome e as partes da extensão do caminho fornecido. A string resultante contém os caracteres do caminho que seguem a última barra invertida ("\"), barra ("/") ou dois pontos (":") caractere no caminho. A string resultante é o caminho inteiro se o caminho não contiver barra invertida após a remoção de barras, barra ou caracteres de dois pontos. A string resultante será nula se o caminho for nulo.
Path.GetDirectoryName(@"c:\projects\roott\wsdlproj\devlop\beta2\text");
c:\projects\roott\wsdlproj\devlop\beta2
, e não era isso que o OP buscava.