Преобразование пути URI к пути относительной файловой системы в .NET.
Как преобразовать абсолютный или относительный путь URI (например, /foo/bar.txt) в (по сегменту) соответствующий путь относительной файловой системы (например, foo\bar.txt) в .NET?
Моя программа не является приложением ASP.NET.
Ответ 1
Вы уже пробовали Server.MapPath?
или Uri.LocalPath свойство? Что-то вроде следующего:
string uriString = "file://server/filename.ext";
// Lesson learnt - always check for a valid URI
if(Uri.IsWellFormedUriString(uriString))
{
Uri uri = new Uri(uriString);
Console.WriteLine(uri.LocalPath);
}
Ответ 2
Я понял этот способ, чтобы создать полный путь абсолютной файловой системы от относительного или абсолютного URI и базового пути.
С
Uri basePathUri = new Uri(@"C:\abc\");
От относительного URI:
string filePath = new Uri(basePathUri, relativeUri).AbsolutePath;
Из абсолютного URI:
// baseUri is a URI used to derive a relative URI
Uri relativeUri = baseUri.MakeRelativeUri(absoluteUri);
string filePath = new Uri(basePathUri, relativeUri).AbsolutePath;