Pfade trennen sich auf allen Plattformen anders

Pfade trennen sich auf allen Plattformen anders

Du weißt nicht was ein InspirationsMoment ist? Im Hintergrundartikel “Mehr Output! Weniger Input!” bekommst du mehr Informationen dazu.

System.IO.Path

Wie oft hast du in Pfadangaben eigentlich schon + "\\" + oder @"C:\blabla.txt" verwendet. Sowohl in StackOverflow wie auch in GitHub kannst du Pfade mit solchen Angaben immer wieder finden. Das Problem damit ist, dass es sowohl für Cross-Plattform Anwendungen ungeeignet ist, wie auch häufig zu unerwünschten Resultaten führt: c:\Program Files\LernMomente\\settings.xml. Somit kann es nicht nur sein, dass deine Datei nicht gefunden wird, sondern, dass sie auch an einer ganz anderen Stelle liegt als du eigentlich wolltest.

Um dieses Problem zu umgehen, gibt es im Namensraum System.IO die Klasse Path. Sie kennt nicht nur für alle Plattformen das richtige Pfadtrennzeichen (DirectorySeparatorChar), sondern setzt es auch passend in Pfade ein (Combine).

Du solltest also zukünftig nur noch diese Klasse benutzen um immer gültige Pfade zu erstellen. Übrigens, im Gegenteil zu manch anderen Klassen (z.B. Directory), überprüfen die meisten Methoden von Path nicht ob die in einem Pfad angegebene Datei auch tatsächlich existiert.

  • Die Implementierung von System.IO.Path.Combine bei Microsoft Reference Source.
  • Die Beschreibung der Klasse bei MSDN mit einer unglaublich schlechten Übersetzung. Die Beschreibung in Englisch findest du hier.
  • Es gibt viele Beispiele für die Verwendung dieser Klasse bei GitHub. Ein bekanntes Projekt ist das aws-sdk-net von Amazon. Ein Beispiel gibt es in der Klasse InternalSDKUtils.

Viel Spaß beim “richtigen” Trennen deiner Pfade

Jan

PS: Gefällt dir das Konzept des InspirationsMoment? Über ein kurzes Feedback würde ich mich freuen.

comments powered by Disqus