c# type to handle relative and absolute URI's

2020-02-05 07:15发布

问题:

I have a use cases where I will be dealing with both local file paths (e.g. c:\foo\bar.txt) and URI's (e.g. http://somehost.com/fiz/baz). I also will be dealing with both relative and absolute paths so I need functionality like Path.Combine and friends.

Is there an existing C# type I should use? The Uri type might work but at a passing glance, it seems to be URI only.

回答1:

Using the Uri class, it seems to be working. It turns any file path to the `file:///..." syntax in the Uri. It handles any URI as expected, and it has capacity to deal with relative URIs. It depends on what else you are trying to do with that path.

(Updated to show the use of relative 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());

Gives me this output:

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


标签: c# path types uri