Antworten:
Siehe DirectoryInfo.Name :
string dirName = new DirectoryInfo(@"c:\projects\roott\wsdlproj\devlop\beta2\text").Name;
Ich denke, Sie möchten den Namen des übergeordneten Ordners vom Dateipfad abrufen. Es ist leicht zu bekommen. Eine Möglichkeit besteht darin, ein FileInfo
Typobjekt zu erstellen und seine Directory
Eigenschaft zu verwenden.
Beispiel:
FileInfo fInfo = new FileInfo("c:\projects\roott\wsdlproj\devlop\beta2\text\abc.txt");
String dirName = fInfo.Directory.Name;
Versuche dies
var myFolderName = @"c:\projects\roott\wsdlproj\devlop\beta2\text";
var result = Path.GetFileName(myFolderName);
@"c:\projects\roott\wsdlproj\devlop\beta2\text\"
Sie könnten dies verwenden:
string path = @"c:\projects\roott\wsdlproj\devlop\beta2\text";
string lastDirectory = path.Split(new char[] { System.IO.Path.DirectorySeparatorChar }, StringSplitOptions.RemoveEmptyEntries).Last();
StringSplitOptions.RemoveEmptyEntries
macht den Trick.
Einfach benutzen Path.GetFileName
Hier - Extrahieren Sie den Ordnernamen aus dem vollständigen Pfad eines Ordners:
string folderName = Path.GetFileName(@"c:\projects\root\wsdlproj\devlop\beta2\text");//Return "text"
Hier ist ein Extra - Extrahieren Sie den Ordnernamen aus dem vollständigen Pfad einer Datei:
string folderName = Path.GetFileName(Path.GetDirectoryName(@"c:\projects\root\wsdlproj\devlop\beta2\text\GTA.exe"));//Return "text"
Ich dachte, es gibt keine andere Möglichkeit, als in das Dateisystem zu gehen, um herauszufinden, ob text.txt ein Verzeichnis oder nur eine Datei ist. Wenn Sie etwas Einfaches wollten, können Sie vielleicht einfach verwenden:
s.Substring(s.LastIndexOf(@"\"));
Hier ist eine alternative Methode, die für mich funktioniert hat, ohne ein DirectoryInfo-Objekt erstellen zu müssen. Der entscheidende Punkt ist, dass dies GetFileName()
funktioniert, wenn der Pfad keinen abschließenden Schrägstrich enthält.
var name = Path.GetFileName(path.TrimEnd(Path.DirectorySeparatorChar));
Beispiel:
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);
Dies kann auch so gemacht werden;
var directoryName = System.IO.Path.GetFileName(@"c:\projects\roott\wsdlproj\devlop\beta2\text");
Basierend auf vorherigen Antworten (aber behoben)
using static System.IO.Path;
var dir = GetFileName(path?.TrimEnd(DirectorySeparatorChar, AltDirectorySeparatorChar));
Erläuterung von GetFileName
aus .NET-Quelle :
Gibt den Namen und die Erweiterungsteile des angegebenen Pfads zurück. Die resultierende Zeichenfolge enthält die Zeichen des Pfads, die dem letzten Backslash ("\"), Slash ("/") oder Doppelpunkt (":") im Pfad folgen. Die resultierende Zeichenfolge ist der gesamte Pfad, wenn der Pfad nach dem Entfernen von nachgestellten Schrägstrichen, Schrägstrichen oder Doppelpunktzeichen keinen Backslash enthält. Die resultierende Zeichenfolge ist null, wenn der Pfad null ist.
Path.GetDirectoryName(@"c:\projects\roott\wsdlproj\devlop\beta2\text");
c:\projects\roott\wsdlproj\devlop\beta2
, und das war nicht das, wonach das OP gesucht hat.