在 Play dev 和 prod 模式下访问文件

Accessing files in Play dev and prod mode

我在跨应用 运行 模式以通用方式访问某些文件时遇到问题。 我在应用程序根文件夹中有文件夹 "resources",其中包含一些重要文件。 当我 运行 处于开发模式时,我以简单的方式访问它们,例如:

Play.application().path().getAbsolutePath()+"/resources/file.file";

但是在我通过 dist 命令打包我的应用程序后(我修改了 build.sbt 以便将 "resources" 文件夹复制到 conf 和 lib 文件夹附近),上面的代码停止工作,由于这个第

Play.application().path().getAbsolutePath()

现在 returns bin 文件夹的路径,其中 app.bat 来自 运行。因此,如果在开发模式下,上面的代码 returns 是正确的路径,如 X:/app/resources/file.file,在生产模式下,它就像 X:/app/bin/resources/file.file,这是不正确的。

P.S。由于许多实际上并不重要的原因,我绝对不能将我的文件放在 conf 文件夹中并将它们作为资源从类加载器访问。

所以问题就这么简单:如何在不进行任何硬编码的情况下以通用的方式跨模式访问这些文件资源。 提前TY.

Application 上有一个方法可以让您访问应用程序根目录中的文件。

https://playframework.com/documentation/2.4.x/api/java/play/Application.html#getFile-java.lang.String-

default java.io.File getFile(java.lang.String relativePath)

Get a file relative to the application root path.

Parameters: relativePath - relative path of the file to fetch

Returns: a file instance - it is not guaranteed that the file exists

既然你已经有了application,你应该可以使用这个方法直接访问文件。