c # тип для обработки относительных и абсолютных URI и локальных путей к файлам - PullRequest
15 голосов
/ 28 апреля 2009

У меня есть случаи использования, когда я буду иметь дело как с локальными путями к файлам (например, c:\foo\bar.txt), так и с URI (например, http://somehost.com/fiz/baz). Я также буду иметь дело как с относительными, так и с абсолютными путями, поэтому мне нужны такие функции, как Path.Combine и друзья.

Есть ли существующий тип C #, который мне следует использовать? Тип Uri может работать, но на первый взгляд кажется, что это только URI.

1 Ответ

23 голосов
/ 28 апреля 2009

Использование класса Uri, похоже, работает. Он превращает любой путь к файлу в синтаксис `file: /// ..." в Uri. Он обрабатывает любой URI, как и ожидалось, и способен обрабатывать относительные URI. Это зависит от того, что еще вы пытаетесь сделать с этот путь.

(Обновлено, чтобы показать использование относительных Uri's):

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());

Дает мне этот вывод:

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