Samstag, 12. Juni 2010

Plattformunabhängige Pfadangaben

Ja, ich muss zugeben, auch ich programmiere nicht ganz sauber. Bei Pfadangaben benutze ich aus Bequemlichkeits- und Leserlichkeitsgründen den Backslash "\" als Trennzeichen zwischen Ordnern. In C# muss dieser noch durch einen weiteren Backslash bzw. ein vorstehendes "@" escaped werden, Pfadangaben könnten bei mir also in etwa so aussehen:

string Pfad = @"C:\Dokumente und Einstellungen\Oliver";

.Net läuft aber auch auf anderen Betriebssystemen (für Linux gibt es beispielsweise das Mono - Projekt) und "\" funktioniert nicht auf allen Betriebssystemen als Trennzeichen, obige Pfadangabe könnte dort also einen Fehler produzieren.
Um eine Plattformunabhängigkeit zu gewährleisten, sollte daher die Methode Path.Combine() verwendet werden.
Diese kombiniert die übergebenen Strings zu einem Pfad mit gültigen Trennzeichen.
So könnte man obigen Beispielpfad so deklarieren:
string Pfad = System.IO.Path.Combine("C:", "Dokumente und Einstellungen", "Oliver");

Pfad wird dann auf einem Windows - Rechner folgenden Wert haben:
"C:Dokumente und Einstellungen\\Oliver".
Alternativ kann man auch direkt Path.DirectorySeparatorChar verwenden, um das plattformabhängige Trennzeichen zu erhalten (System.IO ist mittels using eingebunden)

string Pfad = "C:" + Path.DirectorySeparatorChar + "Dokumente und Einstellungen" + Path.DirectorySeparatorChar + "Oliver";

Liefert unter Windows: "C:\\Dokumente und Einstellungen\\Oliver"

Kommentare:

  1. Ich danke dir vielmals für das Path.DirectoySeperatorChar!

    Man konnte bei einem Split einfach kein Backslash machen, da dies ja Zeilenverschub heist!

    Thx a lot!

    AntwortenLöschen
  2. Dafür hätte es gereicht ein "@" vor den Anführungszeichen zu schreiben, trotzdem finde ich die Path.Combine Methode besser.

    AntwortenLöschen
  3. Klappt meiner Meinung nach nur unter Windows, da Linux und co "/" als Trennzeichen verwendet.

    AntwortenLöschen