我在应用运行模式下以通用方式访问某些文件时遇到问题。 我在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提前。
答案 0 :(得分:1)
Application
上有一个方法,允许您访问应用程序根目录中的文件。
default java.io.File getFile(java.lang.String relativePath)
获取相对于应用程序根路径的文件。
参数:
relativePath
- 要获取的文件的相对路径返回:文件实例 - 不保证文件存在
由于您已经拥有application
,因此您应该可以使用此方法直接访问该文件。