2010-10-31 10 views
18

¡En este momento estoy trabajando en equipo en una obra de teatro! aplicación de marco.
La siguiente historia de usuario que tengo que implementar necesita algunas modificaciones de archivos diferentes, p. mover un archivo a un directorio definido.¿Cómo encuentro la ruta absoluta a una aplicación de marco de juego?

porque estábamos trabajando en diferentes plataformas, no siempre estoy realmente seguro de si la aplicación tiene el camino correcto. Así que quiero trabajar con una ruta absoluta del directorio de la aplicación.

¿Cómo obtengo el camino absoluto de una obra de teatro? aplicación? ¿Hay algún lugar en algún lugar?

+3

"En este momento estoy trabajando en equipo en una aplicación de! Play framework". ¡Genial! – sirmak

Respuesta

18

Play tiene una propiedad de ruta de la aplicación:

String projectRoot = Play.applicationPath; 

esto le dará el directorio que el juego se ejecuta a partir.

creo que una mejor práctica se está moviendo el directorio fuera de su proyecto directorio de instalación y colocación de la ruta al mismo en su application.conf como una propiedad. Luego lo recuperas cuando sea necesario. Por ejemplo:

application.conf:

my.file.path=/tmp/whatever 

Código:

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

Esto no funciona en la versión de Play que estoy usando (2.1.1). Parece que la forma correcta de obtener la ruta de la aplicación es: String path = Play.application(). Path(). GetPath(); – JDischler

+0

Esto funciona para mí en Play Version 1.2.4 – Elijah

2

Ninguna de las trabajadas en mi versión del juego, por lo que utiliza en su lugar: Reproducir. .. actual() trayectoria() getAbsolutePath()

9

Como de juego 2.0: play.Play.applica tion(). ruta(). getAbsolutePath()

9

Desde la versión 2.5.0, play.Play clase está obsoleta. Se recomienda para inyectar play.Environment y utilizar el método de la siguiente manera:

public File rootPath(); 

El singleton play.Environment también contiene algún método muy práctico, que proporcionan los archivos por ruta relativa, por ejemplo,

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

¿Podría mostrar dónde y cómo inyectar este entorno? – JulienD

+0

@JulienD, la mejor manera (que puede depender de los requisitos de su aplicación y el diseño) sería utilizar 'play.Environment' en su módulo. Mire este ejemplo: https://www.playframework.com/documentation/2.5.x/JavaDependencyInjection#Configurable-bindings: puede usar el entorno del entorno mientras crea sus beans/servicios, etc. – Tom

Cuestiones relacionadas