Преобразование пути 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;
Ответ 3
Вы можете сделать это:
var localPath = Server.MapPath("/foo/bar.txt");
Подробнее см. в MSDN