Comment faire pour convertir un chemin d'accès relatif à un chemin absolu dans une application Windows?
Comment puis-je convertir un chemin d'accès relatif à un chemin absolu dans une application Windows?
Je sais que nous pouvons utiliser le serveur.MapPath() dans ASP.NET. Mais que pouvons-nous faire dans une application Windows?
Je veux dire, si il y a un .NET fonction intégrée qui peut gérer ça...
- Entendez-vous un chemin relatif au répertoire courant, en d'autres termes, le répertoire de travail, ou par rapport à l'emplacement de l' .exe?
- Il existe deux types de chemins d'accès relatifs. Un si de la forme "A\B\C" et n'implique pas nécessairement une base particulière. L'autre est de la forme ".\A\B" ou "..\A\B"; ceux qui sont relatifs au répertoire de travail courant.
- Dhall: En passant, c'est une bonne chose d'accepter et d'upvote réponse(s) que vous aider.
Vous devez vous connecter pour publier un commentaire.
Avez-vous essayé:
? Notez que l'utilisation du répertoire de travail courant du processus, et non pas le répertoire contenant l'exécutable. Si cela ne fonctionne pas, merci de préciser votre question.
Si vous voulez obtenir le chemin d'accès par rapport à votre .exe puis utiliser
Path.Combine
ne peut même pas gérer lecteur de chemins relatifs. Il ignore le chemin initial, il me semble. Je poste mon propre solution complète...
, il va produire des déchets.Celui-ci travaille pour les chemins sur des disques différents, pour les chemins relatifs et réelle des chemins relatifs. Heck, il fonctionne même si le
basePath
n'est pas absolue; elle utilise toujours le répertoire de travail actuel en tant que dernier recours.Path.Combine
. C'est facilement résolu, mais j'évite car j'ai souvent l'utiliser pour résoudre les chemins d'accès relatifs au répertoire de travail, et de donner la valeur null comme premier argument un peu bizarre.basePath
comme paramètre optionnel, donc pourquoi il est à la fin, mais si c'est en effet en option, il fait plus de sens au début quand il est là, pour correspondre àPath.Combine()
.C:\TEMP\TEST1.TXT
et un chemin d'accès relatif de..\TEMP2\TEST2.TXT
qui je m'attends à résoudre pourC:\TEMP2\TEST2.TXT
fait résout àC:\TEMP\TEMP2\TEST2.TXT
Path.Combine
aussi ne sont pas automatiquement coupé un nom de fichier à partir de la première partie. Si vous avez un fichier chemin d'accès, il suffit d'utiliserPath.GetDirectoryName
sur elle d'abord. Et si vous ne savez pas si c'est un fichier ou un dossier,System.IO
a des fonctions pour que.C'est un peu plus vieux sujet, mais il pourrait être utile pour quelqu'un.
J'ai résolu un problème similaire, mais dans mon cas, le chemin n'était pas au début du texte.
Voici donc ma solution:
Exemple:
Path.GetFullPath
résout .\ et ..\ automatiquement. Aussi, vous ajoutez lesAbsolutePath
extension de la fonction dans la classe String en général... peut-être un peu exagéré.