在 Playframework 中获取资源文件作为 InputStream
2022-09-02 00:43:46
Play.classloader.getResourceAsStream(filepath);
文件路径 - 相对于什么?项目根目录?游戏框架根?绝对路径?
或者也许使用Play.classloader.getResourceAsStream是错误的?
Play.classloader.getResourceAsStream(filepath);
文件路径 - 相对于什么?项目根目录?游戏框架根?绝对路径?
或者也许使用Play.classloader.getResourceAsStream是错误的?
在 Play Framework 中,“conf”目录位于类路径上,因此您可以将文件放在那里并使用 getResourceAsStream 打开它。
例如,如果您创建了一个文件“conf/foo.txt”,则可以使用以下命令打开它
Play.classloader.getResourceAsStream("foo.txt");
在 Play 2.5.x 中,已弃用接受的答案,因为对类加载器等内容的全局访问正在慢慢被淘汰。处理这种情况的推荐方法是注入一个然后使用它来获得,例如play.api.Environment
classLoader
InputStream
class Controller @Inject()(env: Environment, ...){
def readFile = Action { req =>
...
//if the path is bad, this will return null, so best to wrap in an Option
val inputStream = Option(env.classLoader.getResourceAsStream(path))
...
}
}