我有一个静态文件,我想在我的一个Play Framework模型中阅读。该文件包含一些简单的文本。我找不到任何示例或API来显示存储此类资源的适当位置,其次是如何访问该资源。无论我有什么价值,我都在使用Play for Scala,但我不认为这与此相关。
答案 0 :(得分:6)
没有真正指定数据文件的位置。我通常在application.conf
中设置路径,然后通过
Play.application().configuration.getString("my.data.path")
如果要将其存储在Play应用程序目录中的某个位置,可以通过
获取其根路径Play.application().path()
返回java.io.File
。
对于阅读文件,没有特定于Play的技术。这个问题一直是asked and answered before。简而言之,要读取一个小文本文件,只需执行以下操作:
val lines = scala.io.Source.fromFile("file.txt").mkString
答案 1 :(得分:3)
您可以将任何资源文件放在文件夹/ conf中并按照此处的说明加载(以编程方式):Custom configuration files - Play! Framework 2.0
答案 2 :(得分:1)
我在https://stackoverflow.com/a/37180103/5715934回答了类似的问题。我认为同样的答案也适用于你。
您可以为特定任务选择除专用文件夹以外的其他位置。例如,您可以创建/ resources文件夹。不要在/ app文件夹中创建任何资源文件夹,因为它只是存储代码的位置。与其他特定文件夹相同。然后你可以使用
import import play.Play;
Play.application().getFile("relative_path_from_<Project_Root>);
访问代码中的文件。
只有这样才能在开发环境中完美运行。但是一旦你使用dist文件将它放入生产中,它就无法工作,因为你输入的整个资源文件夹都不会被添加到dist中。为了做到这一点,你必须明确要求play也将/ resources文件夹添加到你的dist中。为此你要做的就是去你的/build.sbt并添加这些行
import com.typesafe.sbt.packager.MappingsHelper._
mappings in Universal ++= directory(baseDirectory.value / "resources")
现在,如果你拍摄并检查你的dist,你可以看到它有一个额外的文件夹&#39;资源&#39;在里面。然后它也适用于生产环境。