Comment convertir un chemin URI absolu ou relatif (par exemple /foo/bar.txt
) vers un chemin d'accès relatif au système de fichiers correspondant (par segment) (par exemple foo\bar.txt
) dans .NET?
Mon programme n'est pas une application ASP.NET.
Avez-vous déjà essayé Server.MapPath
?
ou Uri.LocalPath
propriété? Quelque chose comme suivant:
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);
}
J'ai trouvé cette façon de produire un chemin d'accès complet au système de fichiers absolu à partir d'un URI relatif ou absolu et d'un chemin de base.
Avec:
Uri basePathUri = new Uri(@"C:\abc\");
à partir d'un URI relatif:
string filePath = new Uri(basePathUri, relativeUri).AbsolutePath;
à partir d'un URI absolu:
// baseUri is a URI used to derive a relative URI
Uri relativeUri = baseUri.MakeRelativeUri(absoluteUri);
string filePath = new Uri(basePathUri, relativeUri).AbsolutePath;