2017-03-10 1 views
2

J'essaie d'ouvrir un fichier Help.txt dans Windows Forms à l'aide d'un linkLabel. Cependant incapable de convertir du chemin absolu au chemin relatif. D'abord, j'essaie d'obtenir le chemin absolu du fichier exe. Ce qui est réussi. Ensuite, obtenez uniquement le répertoire du fichier exe. Ce qui est réussi. Troisièmement, j'essaie de combiner le répertoire avec le chemin relatif du fichier Help.txt. Ce qui est infructueux.Convertir le chemin relatif en chemin absolu

Le fichier Exe se trouve dans le dossier -> \ Project \ bin \ Debug, mais le fichier Help.txt se trouve dans le dossier \ Project \ Help. Ceci est mon code: -

string exeFile = (new System.Uri(Assembly.GetEntryAssembly().CodeBase)).AbsolutePath; 
string Dir = Uri.UnescapeDataString(Path.GetDirectoryName(exeFile)); 
string path = Path.Combine(Dir, @"..\..\Help\Help.txt"); 
System.Diagnostics.Process.Start(path); 

Le résultat de mon chemin est -> \ projet \ bin \ Debug .... \ Help \ help.txt

+0

Possible duplication de [PathCanonicalize équivalent en C#] (http://stackoverflow.com/questions/623333/pathcanonicalize-equivalent-in-c-sharp) –

+0

Ou peut-être voir [chemin combiner absolu avec chaînes de chemin relatif] (http : //stackoverflow.com/questions/670566/path-combine-absolute-with-relative-path-strings) –

Répondre

5

Vous devez utiliser Path.GetFullPath() d'avoir le répertoire supérieur « ../../ » pris en compte, voir ci-dessous:

string exeFile = new System.Uri(Assembly.GetEntryAssembly().CodeBase).AbsolutePath; 
string Dir = Path.GetDirectoryName(exeFile); 
string path = Path.GetFullPath(Path.Combine(Dir, @"..\..\Help\Help.txt")); 
System.Diagnostics.Process.Start(path); 

par le MSDN de GetFullPath: Retourne le chemin absolu pour la chaîne de chemin d'accès spécifié. Considérant Path.Combine Combine les chaînes dans un chemin.

+0

mon chemin a des caractères illégaux maintenant ... lol "%" – Philo

+0

Pouvez-vous nous montrer la valeur du chemin (avec les caractères invalides)? et quelle est la valeur d'exeFile aussi? – Frederic

+0

"C: \\ Utilisateurs \\ .. \\ Visual% 20Studio% 202015 \\ ..... – Philo