Подтвердить что ты не робот

С# для обработки относительного и абсолютного URI и локальных путей к файлам

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

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

4b9b3361

Ответ 1

Использование класса 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