Respuestas:
Ver DirectoryInfo.Name :
string dirName = new DirectoryInfo(@"c:\projects\roott\wsdlproj\devlop\beta2\text").Name;
Creo que desea obtener el nombre de la carpeta principal de la ruta del archivo. Es fácil de conseguir. Una forma es crear un FileInfo
objeto de tipo y usar su Directory
propiedad.
Ejemplo:
FileInfo fInfo = new FileInfo("c:\projects\roott\wsdlproj\devlop\beta2\text\abc.txt");
String dirName = fInfo.Directory.Name;
Prueba esto
var myFolderName = @"c:\projects\roott\wsdlproj\devlop\beta2\text";
var result = Path.GetFileName(myFolderName);
@"c:\projects\roott\wsdlproj\devlop\beta2\text\"
Podrías usar esto:
string path = @"c:\projects\roott\wsdlproj\devlop\beta2\text";
string lastDirectory = path.Split(new char[] { System.IO.Path.DirectorySeparatorChar }, StringSplitOptions.RemoveEmptyEntries).Last();
StringSplitOptions.RemoveEmptyEntries
Hace el truco.
Simplemente use Path.GetFileName
Aquí: extraiga el nombre de la carpeta de la ruta completa de una carpeta:
string folderName = Path.GetFileName(@"c:\projects\root\wsdlproj\devlop\beta2\text");//Return "text"
Aquí hay algo adicional: extraiga el nombre de la carpeta de la ruta completa de un archivo:
string folderName = Path.GetFileName(Path.GetDirectoryName(@"c:\projects\root\wsdlproj\devlop\beta2\text\GTA.exe"));//Return "text"
Supuse que no había otra forma que ir al sistema de archivos para averiguar si text.txt es un directorio o simplemente un archivo. Si quieres algo simple, tal vez puedas usar:
s.Substring(s.LastIndexOf(@"\"));
Aquí hay un método alternativo que funcionó para mí sin tener que crear un objeto DirectoryInfo. El punto clave es que GetFileName()
funciona cuando no hay una barra al final en la ruta.
var name = Path.GetFileName(path.TrimEnd(Path.DirectorySeparatorChar));
Ejemplo:
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);
Esto también se puede hacer así;
var directoryName = System.IO.Path.GetFileName(@"c:\projects\roott\wsdlproj\devlop\beta2\text");
Basado en respuestas anteriores (pero corregido)
using static System.IO.Path;
var dir = GetFileName(path?.TrimEnd(DirectorySeparatorChar, AltDirectorySeparatorChar));
Explicación de GetFileName
de fuente .NET :
Devuelve el nombre y las partes de extensión de la ruta dada. La cadena resultante contiene los caracteres de la ruta que siguen a la última barra invertida ("\"), barra inclinada ("/") o dos puntos (":") en la ruta. La cadena resultante es la ruta completa si la ruta no contiene barra invertida después de eliminar las barras diagonales, la barra inclinada o los dos puntos. La cadena resultante es nula si la ruta es nula.
Path.GetDirectoryName(@"c:\projects\roott\wsdlproj\devlop\beta2\text");
c:\projects\roott\wsdlproj\devlop\beta2
, y eso no es lo que buscaba el OP.