在Play开发和生产模式下访问文件

时间:2015-07-30 22:22:35

标签: java playframework-2.0 playframework-2.4

我在应用运行模式下以通用方式访问某些文件时遇到问题。 我在app根文件夹中有“资源”文件夹,其中包含一些重要文件。 当我在开发模式下运行时,我以简单的方式访问它们,如:

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

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

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

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

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

所以问题很简单:如何跨模式以通用方式访问这些文件资源,而无需任何硬编码。 TY提前。

1 个答案:

答案 0 :(得分:1)

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)

     

获取相对于应用程序根路径的文件。

     

参数:relativePath - 要获取的文件的相对路径

     

返回:文件实例 - 不保证文件存在

由于您已经拥有application,因此您应该可以使用此方法直接访问该文件。