2010-10-31 5 views
18

En ce moment je travaille dans une équipe sur une pièce! application cadre.
L'histoire d'utilisateur suivante que je dois implémenter nécessite des modifications de fichier différentes, par ex. déplace un fichier dans un répertoire défini. Étant donné que nous travaillions sur différentes plates-formes, je ne suis pas toujours sûr que l'application ait le bon chemin. Donc, je veux travailler avec un chemin absolu du répertoire de l'application.Comment trouver le chemin absolu d'une application de cadre de jeu?

Comment obtenir le chemin absolu d'un jeu! application? Y a-t-il une méthode?

+3

"En ce moment, je travaille en équipe sur une application de jeu!" Cool! – sirmak

Répondre

18

Jouer a un chemin d'application propriété:

String projectRoot = Play.applicationPath; 

Cela vous donnera le répertoire que le jeu est en cours d'exécution à partir.

Je pense qu'une meilleure pratique consiste à déplacer le répertoire en dehors du répertoire d'installation de votre projet et à lui placer le chemin d'accès dans votre application.conf en tant que propriété. Vous le récupérez ensuite en cas de besoin. Par exemple:

application.conf:

my.file.path=/tmp/whatever 

code:

String projectRoot = Play.configuration.getProperty("my.file.path"); 
+5

Cela ne fonctionne pas sur la version de Play I'm using (2.1.1). On dirait que la façon correcte d'obtenir le chemin de l'application est: String path = Play.application(). Path(). GetPath(); – JDischler

+0

Cela fonctionne pour moi sur le jeu Version 1.2.4 – Elijah

2

Aucun de ceux travaillé sur ma version de jeu, donc je ceci: Play. current(). path(). getAbsolutePath()

9

A partir du jeu 2.0: play.Play.applica tion(). path(). getAbsolutePath()

9

Depuis la version 2.5.0, play.Play la classe est obsolète. Il est recommandé d'injecter play.Environment et utiliser la méthode comme suit:

public File rootPath(); 

Le play.Environment singleton contient également une méthode très pratique, qui fournissent les fichiers par chemin relatif par exemple

public File getFile(String relativePath); 
public URL resource(String relativePath); 
public InputStream resourceAsStream(String relativePath); 
+0

Pourriez-vous s'il vous plaît montrer où et comment injecter cet environnement? – JulienD

+0

@JulienD, le meilleur moyen (qui peut dépendre des exigences et de la conception de votre application) serait d'utiliser 'play.Environment' dans votre module. S'il vous plaît regardez cet exemple: https://www.playframework.com/documentation/2.5.x/JavaDependencyInjection#Configurable-bindings - vous pouvez utiliser l'environnement d'environnement lors de la création de vos beans/services, etc. – Tom

Questions connexes