2012-04-19 1 views
1

Lorsque je lance mon application Java depuis la ligne de commande, j'aimerais connaître l'emplacement dans le système de fichiers de la console avant d'appeler mon script. Je veux fondamentalement connaître mon pwd de l'intérieur de l'application Java, est-ce possible? Je ne vois rien dans System.getProperty (""). La propriété user.dir ne fonctionne pas, elle me donne simplement l'emplacement de mon fichier .project pour mon projet Eclipse.Lorsque je lance mon application Java, puis-je obtenir le chemin sur ma console Linux?

Je suis capable d'obtenir le bon chemin dans mon script python avec os.getcwd(), mais je n'arrive pas à comprendre comment obtenir ce chemin dans mon programme Java.

+1

Ceci est mieux connu sous le répertoire de travail courant, pas le chemin . Chemin désigne généralement la variable d'environnement appelée PATH, qui correspond à la liste des répertoires dans lesquels sont recherchés les exécutables ou les bibliothèques. Vous pourriez dire «le chemin du cwd» mais c'est redondant. –

Répondre

3

Essayez ceci:

File f = new File("."); 
    f.getCanonicalPath(); // returns the path you are looking for 

Vous pouvez également utiliser:

System.getProperty("user.dir") 

Il y a quelques bonnes réponses sur la question suivante cela pourrait être utile: Get the application's path

+0

Impossible de créer un problème, si l'utilisateur qui l'exécute n'a pas accès en lecture/écriture dans le PWD? Je connais le "." existera, mais dans certains contextes particuliers, je pense que cela pourrait être un problème? – kevingreen

+0

non, la création d'un objet 'Fichier' n'ouvre pas ou ne crée pas le fichier. –

1

Essayez ceci:

CodeSource cs = getClass().getProtectionDomain().getCodeSource(); 

Puis cs.getLocation();

Ce sera votre PWD sur l'exécution.

ED: CodeSource fait partie de cette bibliothèque: import java.security.CodeSource;

-2

Essayez ceci:

System.getProperty("user.home") 
+0

Cela obtiendra uniquement le répertoire de base du compte d'utilisateur qui exécute l'application. Pas le PWD l'application est en cours d'exécution. – kevingreen

1

Je l'utilise habituellement:

System.out.println(getClass().getClassLoader().getResource(".") 
       .getPath()); 

qui retourne le même résultat que @kevingreen suggère

+0

Je suppose que le vôtre est plus propre, il ne s'agit pas d'une autre importation. – kevingreen

+0

Eh bien, @kevingreen System.out.println (getClass() getProtectionDomain() getCodeSource() \t \t \t \t .getLocation() getPath()...); n'implique aucune importation non plus ;-) J'ai appris quelque chose de nouveau de votre part, merci! – Kennet

Questions connexes