我在跨应用程序运行模式以通用方式访问某些文件时遇到问题。 我在应用程序根文件夹中有文件夹“resources”,其中包含一些重要文件。 当我在开发模式下运行时,我以简单的方式访问它们,例如:
Play.application().path().getAbsolutePath()+"/resources/file.file";
但是在我通过 dist 命令打包我的应用程序后(我修改了 build.sbt,以便将“resources”文件夹复制到 conf 和 lib 文件夹附近),由于这一行,上面的代码停止工作
Play.application().path().getAbsolutePath()
现在返回 bin 文件夹的路径,app.bat 从中运行。因此,如果在开发模式下,上面的代码返回正确的路径,如 X:/app/resources/file.file,在产品模式下,则返回正确的路径,如 X:/app/bin/resources/file.file,这是不正确的。
附注我绝对不能将我的文件放在 conf 文件夹中并从类加载器中将它们作为资源访问,因为有很多实际上并不重要的原因。
所以问题很简单:如何跨模式以通用方式访问这些文件资源,而不需要任何硬编码。 提前TY。
最佳答案
Application
上有一个方法可以让您访问应用程序根目录中的文件。
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 fetchReturns: a file instance - it is not guaranteed that the file exists
由于您已经拥有应用程序
,因此您应该能够使用此方法直接访问该文件。
关于java - 在 Play 开发和生产模式下访问文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31735082/