Celui-ci travaille pour les chemins sur les différents lecteurs, pour les chemins d'entraînement-apparenté et les chemins réels relatifs. Heck, cela fonctionne même si le basePath
n'est pas réellement absolu; Il utilise toujours le répertoire de travail en cours comme solution de secours finale.
public static String GetAbsolutePath(String relativePath, String basePath)
{
if (relativePath == null)
return null;
if (basePath == null)
basePath = Path.GetFullPath("."); // quick way of getting current working directory
else
basePath = GetAbsolutePath(basePath, null); // to be REALLY sure ;)
String path;
// specific for windows paths starting on \ - they need the drive added to them.
// I constructed this piece like this for possible Mono support.
if (!Path.IsPathRooted(relativePath) || "\\".Equals(Path.GetPathRoot(relativePath)))
{
if (relativePath.StartsWith(Path.DirectorySeparatorChar.ToString()))
path = Path.Combine(Path.GetPathRoot(basePath), relativePath.TrimStart(Path.DirectorySeparatorChar));
else
path = Path.Combine(basePath, relativePath);
}
else
path = relativePath;
// resolves any internal "..\" to get the true full path.
return Path.GetFullPath(path);
}
Voulez-vous dire un chemin relatif vers le répertoire en cours, en d'autres termes le répertoire de travail, ou par rapport à l'emplacement du fichier .exe? –
Il existe deux types de chemins relatifs. Un si de la forme "A \ B \ C" et n'implique pas une base particulière. L'autre a la forme ". \ A \ B" ou ".. \ A \ B"; ceux-ci sont relatifs au répertoire de travail actuel. – MSalters
@Amit Dhall: Soit dit en passant, c'est une bonne chose d'accepter et d'upvote la réponse (s) qui vous aident. –