Преобразование пути URI в относительный путь файловой системы в .NET - PullRequest
47 голосов
/ 14 марта 2010

Как преобразовать абсолютный или относительный путь URI (например, /foo/bar.txt) в (сегментарный) соответствующий относительный путь файловой системы (например, foo\bar.txt) в .NET?

Моя программа не являетсяПриложение ASP.NET.

Ответы [ 3 ]

75 голосов
/ 14 марта 2010

Вы уже пробовали 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);
}
11 голосов
/ 14 марта 2010

Я выяснил, как получить полный абсолютный путь к файловой системе из относительного или абсолютного 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;
5 голосов
/ 14 марта 2010

Вы можете сделать это:

var localPath = Server.MapPath("/foo/bar.txt");

Подробнее см. В MSDN

...