2010-10-31 3 views
18

На данный момент я работаю в команде по пьесе! рамочное приложение.
Следующая пользовательская история, которую мне нужно реализовать, требует некоторых различных модификаций файлов, например. переместите файл в определенный каталог.Как найти абсолютный путь к файлу приложения для игр?

Поскольку мы работали на разных платформах, я не всегда уверен, что приложение имеет правильный путь. Поэтому я хочу работать с абсолютным путем в каталоге приложения.

Как получить абсолютный путь к игре! приложение? Есть ли какой-нибудь метод?

+3

«В настоящий момент я работаю в команде в приложении для игры!». Прохладный! – sirmak

ответ

18

Play имеет свойство путь приложения:

String projectRoot = Play.applicationPath; 

Это даст вам каталог, Играть бежит от.

Я думаю, что лучшая практика перемещает каталог за пределами вашего каталога установки проекта и помещает путь к нему в ваш application.conf как свойство. Затем вы извлекаете его, когда это необходимо. Например:

Application.conf:

my.file.path=/tmp/whatever 

Код:

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

Это не работает в версии Play, которую я использую (2.1.1). Похоже, правильный путь для получения пути к приложению: String path = Play.application(). Path(). GetPath(); – JDischler

+0

Это работает для меня на Play Version 1.2.4 – Elijah

2

Ни один из тех, кто работал на моей версии игры, так что я использовал вместо этого: Play. current(). path(). getAbsolutePath()

9

С версии 2.5.0, play.Play класс устарел. Рекомендуется вводить play.Environment и использовать метод следующим образом:

public File rootPath(); 

play.Environment одноточечно также содержит некоторые очень удобный способ, которые обеспечивают файлы по относительному пути, например,

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

Не могли бы вы показать, где и как вводить эту среду? – JulienD

+0

@JulienD, лучший способ (который может зависеть от ваших требований приложения и дизайна) - использовать «play.Environment» в вашем модуле. Посмотрите на этот пример: https://www.playframework.com/documentation/2.5.x/JavaDependencyInjection#Configurable-bindings - вы можете использовать среду instace при создании ваших beans/services и т. Д. – Tom

Смежные вопросы