Risposte:
Vedere DirectoryInfo.Name :
string dirName = new DirectoryInfo(@"c:\projects\roott\wsdlproj\devlop\beta2\text").Name;
Penso che tu voglia ottenere il nome della cartella principale dal percorso del file. È facile da ottenere. Un modo è creare un FileInfooggetto di tipo e utilizzare la sua Directoryproprietà.
Esempio:
FileInfo fInfo = new FileInfo("c:\projects\roott\wsdlproj\devlop\beta2\text\abc.txt");
String dirName = fInfo.Directory.Name;
Prova questo
var myFolderName = @"c:\projects\roott\wsdlproj\devlop\beta2\text";
var result = Path.GetFileName(myFolderName);
@"c:\projects\roott\wsdlproj\devlop\beta2\text\"
Potresti usare questo:
string path = @"c:\projects\roott\wsdlproj\devlop\beta2\text";
string lastDirectory = path.Split(new char[] { System.IO.Path.DirectorySeparatorChar }, StringSplitOptions.RemoveEmptyEntries).Last();
StringSplitOptions.RemoveEmptyEntriesfa il trucco.
Basta usare Path.GetFileName
Qui - Estrai il nome della cartella dal percorso completo di una cartella:
string folderName = Path.GetFileName(@"c:\projects\root\wsdlproj\devlop\beta2\text");//Return "text"
Ecco alcuni extra: estrai il nome della cartella dal percorso completo di un file:
string folderName = Path.GetFileName(Path.GetDirectoryName(@"c:\projects\root\wsdlproj\devlop\beta2\text\GTA.exe"));//Return "text"
Ho pensato che non c'era altro modo se non entrare nel file system per scoprire se text.txt è una directory o solo un file. Se volevi qualcosa di semplice, forse puoi semplicemente usare:
s.Substring(s.LastIndexOf(@"\"));
Ecco un metodo alternativo che ha funzionato per me senza dover creare un oggetto DirectoryInfo. Il punto chiave è che GetFileName()funziona quando non ci sono barre finali nel percorso.
var name = Path.GetFileName(path.TrimEnd(Path.DirectorySeparatorChar));
Esempio:
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);
Anche questo può essere fatto in questo modo;
var directoryName = System.IO.Path.GetFileName(@"c:\projects\roott\wsdlproj\devlop\beta2\text");
Basato su risposte precedenti (ma risolto)
using static System.IO.Path;
var dir = GetFileName(path?.TrimEnd(DirectorySeparatorChar, AltDirectorySeparatorChar));
Spiegazione di GetFileNameda sorgente .NET :
Restituisce il nome e le parti dell'estensione del percorso specificato. La stringa risultante contiene i caratteri del percorso che seguono l'ultima barra rovesciata ("\"), barra ("/") o due punti (":") nel percorso. La stringa risultante è l'intero percorso se path non contiene barre rovesciate dopo aver rimosso le barre finali, i caratteri barra o due punti. La stringa risultante è null se path è null.
Path.GetDirectoryName(@"c:\projects\roott\wsdlproj\devlop\beta2\text");
c:\projects\roott\wsdlproj\devlop\beta2, e non è quello che voleva l'OP.