Laden...

nur Namen des letzten Verzeichnis

Erstellt von chrische5 vor 14 Jahren Letzter Beitrag vor 14 Jahren 1.470 Views
C
chrische5 Themenstarter:in
489 Beiträge seit 2007
vor 14 Jahren
nur Namen des letzten Verzeichnis

Hallo

Ich hole mir mittels Directory.GetDirectories alle Verzeichnisse und nun stehen dort aber string wie (C:\Test\TestName\TestStadt). Wie ist es möglichn nun nur den Namen des letzten Verzeichnisses zu bekommen. Im Beispielfall bräuchte ich TestStadt. Gibt es dazu etwas fertiges im Framework?

chrische

6.911 Beiträge seit 2009
vor 14 Jahren

Hallo,

du kannst den String der den Pfad darstellt mit string.Split('\') aufteilen und dann von dem resultierenden Array das letzte Element nehmen.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

C
chrische5 Themenstarter:in
489 Beiträge seit 2007
vor 14 Jahren

Hallo

Okay an so etwas hatte ich auch schon gedacht. Es gibt also keine Methode im Framework, die genau das macht, was ich brauch?

chrische

467 Beiträge seit 2007
vor 14 Jahren

üblicher wäre glaube ich Path.GetFileName, auch wenn es keine Dateien sind - es funktioniert und ist kürzer.

6.911 Beiträge seit 2009
vor 14 Jahren

üblicher wäre glaube ich Path.GetFileName, auch wenn es keine Dateien sind - es funktioniert und ist kürzer.

Das hat mich jetzt auf die Idee gebracht dass es auch korrekt funktionieren sollte 😉


DirectoryInfo di = new DirectoryInfo("C:\\Test\\TestName\\TestStadt");
string s = di.Name;

liefert das gewünschte Ergebnis.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

467 Beiträge seit 2007
vor 14 Jahren

Streiten wir mal darum, welche Methode besser ist 😉 😁
meine Argumente:
weniger Balast, da keine unnötigen DirInfo-objekte, also schneller etc.
wahrscheinlich weniger anpassung für ihn, wenn er GetDirectories benutzt
gut, mehr fällt mir nicht ein 🙂

6.911 Beiträge seit 2009
vor 14 Jahren

Streiten wir mal darum, welche Methode besser ist

Es geht darum eine Information von ein Pfad zu ermitteln -> übersetzt ins Englische => Information from Directory -> Umstellen und Kürzen => DirectoryInfo 8)
Mit einer Datei hat es nicht zu, darum scheidet GetFileName aus. Das wäre eine Zweckentfremdung (die laut deiner Aussage allerdings auch das korrekte Ergebnis liefert) der Methode.

Von der Umsetzung her funktionieren DirectoryInfo.Name und Path.GetFilename ähnlich und zwar derart dass mittels SubString die benötigte Information extrahiert wird.

weniger Balast, da keine unnötigen DirInfo-objekte, also schneller etc.

Kannst du das beweisen - sonst glaub ich gar nichts. (Ist aber nicht nötig).

Dieses Spiel müssen wir aber nicht weitertreiben - ich für meinen Teil zumindest nicht.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

467 Beiträge seit 2007
vor 14 Jahren

Ja in der Tat, vom stilistischen her (also auch in meinen Augen) gewinnst du. 🙂 Und ja, GetFileName funktioniert. Ich habe es davor sogar ausprobiert. =)

M
120 Beiträge seit 2009
vor 14 Jahren

Naja die Split-Methode verliert in diesem Fall schon deshalb, weil nicht Path.DirectorySeparatorChar benutzt wird 😉 Zumal es schon deswegen unsauber ist, weil nicht alle Varianten berücksichtigt sind (unter Windows funktionieren ja sowohl / als auch \ in Pfadangaben).

49.485 Beiträge seit 2005
vor 14 Jahren

Hallo zusammen,

der "Streit" um die beste Lösung ist ontopic. Daher habe ich alle offtopic-Tags entfernt.

Ich hoffe, wir können uns schnell darauf einigen, dass String-Split unpassend und ungünstig ist. Einen Grund hat ja Marsti schon geliefert.

Ich persönlich finde es übertrieben ein DirectoryInfo-Objekt zu erzeugen, nur um den Namen zu bekommen, den man per Path.GetFileName auch direkt bekommen kann.

Blöd ist natürlich, dass die Methode Path.GetFileName heißt, obwohl man damit genauso gut Verzeichnisnamen auslesen kann.

herbivore

5.742 Beiträge seit 2007
vor 14 Jahren

Aufpassen sollte man nur, wenn jemand noch am Ende einen Backslash eingibt; also:
C:\Test\TestName\TestStadt\