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

标签 java playframework-2.0 playframework-2.4

我在跨应用程序运行模式以通用方式访问某些文件时遇到问题。 我在应用程序根文件夹中有文件夹“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 上有一个方法可以让您访问应用程序根目录中的文件。

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

由于您已经拥有应用程序,因此您应该能够使用此方法直接访问该文件。

关于java - 在 Play 开发和生产模式下访问文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31735082/

相关文章:

java - JPA - 悲观锁 - 当锁存在时会发生什么?

java - 验证不适用于 Play Framework 2 中的嵌套对象

forms - 如何在Play中处理长格式和不同格式! Scala表格?

mysql - Play无法连接MySQL

java - 导入sbt项目时出错: idea

java - 我们真的可以替换所有实现多个接口(interface)的类吗?

java - 如何为 junit @Test 的 "expected"属性使用变量?

java - 将 ResponseEntity<?> 转换为流

java - Play框架文件上传无此类文件异常

postgresql - Play/光滑 : SQLTimeoutException: Timeout after 1001ms of waiting for a connection