Ist irgendetwas eingebaut System.IO.Path
, das mir nur den Dateipfad gibt?
Zum Beispiel, wenn ich eine habe string
@ "c: \ webserver \ public \ myCompany \ configs \ promo.xml",
Gibt es eine BCL-Methode, die mir geben wird?
"c: \ webserver \ public \ myCompany \ configs \"?
promo.xml
eine Datei oder ein Verzeichnis mit demselben Namen bezeichnet wird. Das ist wahrscheinlich der Grund, warumPath.GetDirectoryName()
es so einfach implementiert ist und nur das letzte Segment abschneidet oder den abschließenden Schrägstrich entfernt, falls es einen gibt.Antworten:
Path.GetDirectoryName()
... aber Sie müssen wissen, dass der Pfad, den Sie zu ihm übergeben, einen Dateinamen enthält; Es entfernt einfach das letzte Bit aus dem Pfad, unabhängig davon, ob es sich um einen Dateinamen oder einen Verzeichnisnamen handelt (es hat tatsächlich keine Ahnung, welcher).Sie können zuerst validieren, indem Sie testen
File.Exists()
und / oder zuerstDirectory.Exists()
auf Ihrem Pfad nachsehen, ob Sie anrufen müssenPath.GetDirectoryName
quelle
File.Exists()
. In der Tat ist es eher kontraproduktiv, wenn Sie den Verzeichnisnamen suchen, wenn er noch nicht vorhanden ist.System.IO
damit dies funktioniert.quelle
using System.IO;
, Pfadmethoden zu verwendenPath.GetDirectoryName()
Gibt den Verzeichnisnamen zurück, sodass Sie das, was Sie möchten (mit dem nachfolgenden umgekehrten Solidus-Zeichen), aufrufen könnenPath.GetDirectoryName(filePath) + Path.DirectorySeparatorChar
.quelle
quelle
Verwenden Sie 'GetParent ()' wie gezeigt, funktioniert gut. Fügen Sie nach Bedarf eine Fehlerprüfung hinzu.
quelle
Ich habe das benutzt und es funktioniert gut:
quelle