2009-04-28 14 views
14

Mam przypadki użycia, w których będę zajmować się zarówno lokalnymi ścieżkami plików (np. c:\foo\bar.txt), jak i URI (np. http://somehost.com/fiz/baz). Będę również miał do czynienia zarówno ze ścieżkami względnymi, jak i bezwzględnymi, więc potrzebuję funkcji takich jak Path.Combine i przyjaciół.C# typ do obsługi względnych i bezwzględnych identyfikatorów URI i lokalnych ścieżek plików

Czy istnieje istniejący typ C#, który powinienem użyć? Model Uri type może działać, ale na pierwszy rzut oka wydaje się być tylko identyfikatorem URI.

Odpowiedz

22

Użycie klasy Uri wydaje się skuteczne. Przekształca ona dowolną ścieżkę pliku w składnię `file: /// ..." w Uri. Obsługuje dowolny URI zgodnie z oczekiwaniami i ma zdolność radzenia sobie z relatywnymi identyfikatorami URI. To zależy od tego, co jeszcze próbujesz zrobić z że ścieżka

(Aktualizacja pokazać wykorzystanie względny URI).

string fileName = @"c:\temp\myfile.bmp"; 
string relativeFile = @".\woohoo\temp.bmp"; 
string addressName = @"http://www.google.com/blahblah.html"; 

Uri uriFile = new Uri(fileName); 
Uri uriRelative = new Uri(uriFile, relativeFile); 
Uri uriAddress = new Uri(addressName); 

Console.WriteLine(uriFile.ToString()); 
Console.WriteLine(uriRelative.ToString()); 
Console.WriteLine(uriAddress.ToString()); 

daje mi ten komunikat:

file:///c:/temp/myfile.bmp 
file:///c:/temp/woohoo/temp.bmp 
http://www.google.com/blahblah.html 
+0

że file: /// ... rzeczą jest niewygodne, ale Mogę z tym żyć, jeśli trzeba, naprawdę liczyłem na coś, co jest dla niego bezpośrednio ustawione +1 – BCS

+2

Cóż, możesz sprawdzić "LocalPath" pr operty, które podadzą nazwę pliku w formacie lokalnym (bez pliku: ///). –

+0

Bardzo pomocny! Dzięki za szybką odpowiedź. –

Powiązane problemy