現時点では、私は Play のチームと協力しています。フレームワーク アプリ。次のユーザー ストーリーでは、ファイルを定義済みディレクトリに移動するなど、いくつかの異なるファイル変更を実装する必要があります。
私たちはさまざまなプラットフォームで作業しているため、アプリが正しいパスを持っているかどうかは常にわかりません. したがって、アプリ ディレクトリの絶対パスを使用したいと考えています。
Play! の絶対パスを取得するにはどうすればよいですか? アプリ?これには方法がありますか?
現時点では、私は Play のチームと協力しています。フレームワーク アプリ。次のユーザー ストーリーでは、ファイルを定義済みディレクトリに移動するなど、いくつかの異なるファイル変更を実装する必要があります。
私たちはさまざまなプラットフォームで作業しているため、アプリが正しいパスを持っているかどうかは常にわかりません. したがって、アプリ ディレクトリの絶対パスを使用したいと考えています。
Play! の絶対パスを取得するにはどうすればよいですか? アプリ?これには方法がありますか?
この回答は、v2より前の古いバージョンのPlayFrameworkにのみ適用されます。
Playにはアプリケーションパスプロパティがあります。
String projectRoot = Play.applicationPath;
これにより、Playが実行されているディレクトリが提供されます。
より良い方法は、ディレクトリをプロジェクトのインストールディレクトリの外に移動し、そのディレクトリへのパスをapplication.conf
プロパティとして配置することだと思います。次に、必要に応じてそれを取得します。例えば:
Application.conf:
my.file.path=/tmp/whatever
コード:
String projectRoot = Play.configuration.getProperty("my.file.path");
バージョン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);
play 2.0 以降: play.Play.application().path().getAbsolutePath()
どちらも私のバージョンのプレイでは機能しなかったので、代わりにこれを使用しました: Play.current().path().getAbsolutePath()