79 votes

Obtenir l'application de chemin

J'ai récemment cherché comment je pourrais obtenir le répertoire de l'application en Java. J'ai enfin trouvé la réponse, mais j'ai besoin étonnamment longue parce que la recherche de tel terme générique n'est pas facile. Je pense que ce serait une bonne idée de compiler une liste de comment réaliser cela dans plusieurs langues.

Se sentir libre de/downvote si vous (ne pas) comme l'idée et merci de contribuer si vous le souhaitez.

Précisions:

Il y a une distinction subtile entre le répertoire qui contient le fichier exécutable et le répertoire de travail courant (en pwd sous Unix). J'avais tout d'abord intéressés à l'ancien, mais n'hésitez pas à poster des méthodes de détermination de celle-ci (en clarifiant lequel vous dire).

22voto

Konrad Rudolph Points 231505

Dans .NET (C#, VB, ...), vous pouvez interroger le courant Assembly exemple pour son Location. Cependant, cela a de l'exécutable de nom de fichier joint. Le code suivant assainit le chemin d'accès (using System.IO et using System.Reflection):

Directory.GetParent(Assembly.GetExecutingAssembly().Location)

Alternativement, vous pouvez utiliser les informations fournies par AppDomain à la recherche pour les assemblys référencés:

System.AppDomain.CurrentDomain.BaseDirectory

VB permet à un autre raccourci via l' My d'espace de noms:

My.Application.Info.DirectoryPath

9voto

MrZebra Points 6508

Dans Windows, utilisez la WinAPI fonction GetModuleFileName(). Passer la valeur NULL pour la poignée du module pour obtenir le chemin d'accès pour le module en cours.

7voto

Fara Points 3221

Python

path = os.path.dirname(__file__)

Qui obtient le chemin d'accès du module en cours.

4voto

Konrad Rudolph Points 231505

En Java, il y a deux façons de trouver le chemin d'accès de l'application. L'une est d'utiliser System.getProperty:

System.getProperty("user.dir");

Une autre possibilité est l'utilisation de l' java.io.File:

new java.io.File("").getAbsolutePath();

Encore une autre possibilité utilise la réflexion:

getClass().getProtectionDomain().getCodeSource().getLocation().getPath();

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X