How do I convert an absolute or relative URI path (e.g. /foo/bar.txt
) to a (segmentwise) corresponding relative file system path (e.g. foo\bar.txt
) in .NET?
My program is not an ASP.NET application.
How do I convert an absolute or relative URI path (e.g. /foo/bar.txt
) to a (segmentwise) corresponding relative file system path (e.g. foo\bar.txt
) in .NET?
My program is not an ASP.NET application.
Check out Server.MapPath
.
http://msdn.microsoft.com/en-us/library/ms524632.aspx
If it's not an ASP.NET application, check out:
System.IO.Path.GetFullPath("filename")
Have you already tried Server.MapPath
?
or Uri.LocalPath
property? Something like following :
Uri uri = new Uri("file://server/filename.ext");
Console.WriteLine(uri.LocalPath);
I figured out this way to produce a full absolute file system path from a relative or absolute URI and a base path.
With:
Uri basePathUri = new Uri(@"C:\abc\");
From a relative URI:
string filePath = new Uri(basePathUri, relativeUri).AbsolutePath;
From an absolute URI:
// baseUri is a URI used to derive a relative URI
Uri relativeUri = baseUri.MakeRelativeUri(absoluteUri);
string filePath = new Uri(basePathUri, relativeUri).AbsolutePath;