2010-10-31 18 views
18

Al momento sto lavorando in una squadra per un gioco! applicazione quadro.
Il prossimo utente che devo implementare necessita di alcune modifiche al file, ad es. sposta un file in una directory definita.Come trovo il percorso assoluto per un'app di gioco?

Poiché stavamo lavorando su piattaforme diverse, non sono sempre sicuro che l'app abbia la strada giusta. Quindi voglio lavorare con un percorso assoluto della directory app.

Come ottengo il percorso assoluto di un gioco! app? Esiste un metodo?

+3

"Al momento sto lavorando in una squadra su un'app di gioco! Framework". Fantastico! – sirmak

risposta

18

Play ha una proprietà di percorso di applicazione:

String projectRoot = Play.applicationPath; 

questo vi darà la directory che il gioco è in esecuzione da.

Penso che una pratica migliore è spostare la directory al di fuori della directory di installazione del progetto e posizionare il percorso su di essa nel proprio application.conf come una proprietà. Quindi lo recuperi quando necessario. Per esempio:

Application.conf:

my.file.path=/tmp/whatever 

Codice:

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

Questo non funziona sulla versione di Play Sto usando (2.1.1). Sembra che il modo corretto per ottenere il percorso dell'applicazione sia: String path = Play.application(). Path(). GetPath(); – JDischler

+0

Funziona per me sulla versione 1.2.4 di Play – Elijah

2

Nessuno di coloro che ha lavorato sulla mia versione di gioco, così ho usato questo, invece: Play. current(). path(). getAbsolutePath()

9

A partire dal gioco 2.0: play.Play.applica(). path(). getAbsolutePath()

9

Poiché la versione 2.5.0, play.Play è obsoleta. Si raccomanda di iniettare play.Environment e utilizzare il metodo come segue:

public File rootPath(); 

Il play.Environment singleton contiene anche un metodo molto pratico, che forniscono i file percorso relativo esempio

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

Per favore, puoi mostrare dove e come iniettare questo ambiente? – JulienD

+0

@ GiulienD, il modo migliore (che potrebbe dipendere dai requisiti dell'applicazione e dalla progettazione) sarebbe utilizzare 'play.Environment' nel modulo. Guarda questo esempio: https://www.playframework.com/documentation/2.5.x/JavaDependencyInjection#Configurable-bindings - puoi usare l'instace dell'ambiente mentre crei i tuoi bean/servizi, ecc. – Tom

Problemi correlati