首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Playframework中以InputStream的形式获取资源文件

在Playframework中以InputStream的形式获取资源文件
EN

Stack Overflow用户
提问于 2011-07-31 16:24:58
回答 5查看 15.4K关注 0票数 22
代码语言:javascript
复制
Play.classloader.getResourceAsStream(filepath); 

文件路径-相对于什么?项目根?playframework root?绝对路径?

或者可能Play.classloader.getResourceAsStream的用法是错误的?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-10-04 23:10:59

在Play框架中,"conf“目录位于类路径上,因此您可以将文件放在那里并使用getResourceAsStream打开它。

例如,如果您创建了一个文件"conf/foo.txt“,您可以使用以下命令打开它

代码语言:javascript
复制
Play.classloader.getResourceAsStream("foo.txt");
票数 22
EN

Stack Overflow用户

发布于 2016-10-18 00:00:46

被接受的答案在Play 2.5.x中被弃用,因为对类加载器之类的东西的全局访问正在慢慢被淘汰。处理这个问题的推荐方法是注入一个play.api.Environment,然后使用它的classLoader来获取InputStream,例如

代码语言:javascript
复制
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))

    ...
  }
}
票数 11
EN

Stack Overflow用户

发布于 2014-01-23 09:26:39

作为使用conf目录(应该仅用于与配置相关的文件)的替代方法,您可以使用public目录并通过以下方式访问它:

代码语言:javascript
复制
 Play.classloader.getResourceAsStream("public/foo.txt")

或者在Scala中使用:

代码语言:javascript
复制
 Play.resourceAsStream("public/foo.txt")
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6888343

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档