2009-04-17 7 views
0

Wie kann ein XML-URI ordnungsgemäß in einen Windows-Dateipfad konvertiert werden?Erstellen eines Windows-Pfads aus einem XML-URI

Als Ausgangspunkt, es möglich ist, drehen:

file:///C:/DirA/DirB/File.txt 

in:

C:\DirA\DirB\File.txt 

... indem man zuerst Fallenlassen der file:/// substring (es, mit denen wir es zu tun, um zu bestimmen benutzt zu haben eine lokale Datei) und dann, wenn ein Schrägstrich in der ursprünglichen Zeichenfolge angezeigt wird, einen umgekehrten Schrägstrich. Das scheint ein guter Anfang zu sein, aber es ist nicht genug. Zum Beispiel könnte die URI wie folgt aussehen:

file:///C:/DirA/DirB/With%20Spaces.txt 

... das wird:

C:\DirA\DirB\With Spaces.txt 

... nach% 20s mit Leerzeichen ersetzt. Selbst das würde jedoch nicht ausreichen, da es auch erforderlich sein kann, sich mit anderen derartigen Maßnahmen zu befassen. Darüber hinaus sind einige dieser Zeichen keine legalen Windows-Dateinamen, daher ist es notwendig, zu identifizieren, welche dieser Kodierungen in Windows-Dateinamen gültig sind und einen Fehler zu melden, wenn etwas anderes gefunden wird.

Gibt es noch etwas, das ich vergesse? Möchte jemand das oben genannte erweitern?

Antwort

2

Verwenden Sie die Uri.LocalPath Eigenschaft.

string path = new Uri("file:///C:/folder/file.txt").LocalPath; 

Dies ist Plattform-sensitiv, so ist path"C:\folder\file.txt" auf meinem Windows-Rechner.

Beachten Sie, dass Sie auch in die andere Richtung (von einem lokalen Dateisystempfad zu einem file URI) gehen mit dem Konstruktor:

var uri = new Uri(@"C:\folder\file.txt"); 
Verwandte Themen