【问题标题】:What are "resources" folders in SBT projects for?SBT 项目中的“资源”文件夹有什么用?
【发布时间】:2011-04-21 14:06:59
【问题描述】:

在 SBT 项目文件夹层次结构中,我将 Scala 源代码放在 src/main/scala 中,并将测试放在 src/tests/scala 中。我打算在 src/main/resources 和 src/tests/resources 中添加什么?

【问题讨论】:

标签: scala sbt


【解决方案1】:

该目录中的所有内容都会打包到您调用 package 时创建的 .jar 中。

这意味着您可以将它用于图像、声音文件、文本以及任何不是代码但被您的代码使用的东西。

【讨论】:

  • 谢谢你,迪伦。您能否链接到一个 Scala (2.8) 代码示例,了解我如何使用这些资源?
  • 这个重复的问题有一个简洁的例子:stackoverflow.com/questions/5285898/…
【解决方案2】:

以下是将存储在资源中的文本文件复制到本地文件系统的示例:

  def copyFileFromResource(source: String, dest: File) {
    val in = getClass.getResourceAsStream(source)
    val reader = new java.io.BufferedReader(new java.io.InputStreamReader(in))
    val out = new java.io.PrintWriter(new java.io.FileWriter(dest))
    var line: Option[String] = None
    line = Option[String](reader.readLine)
    while (line != None) {
      line foreach { out.println }
      line = Option[String](reader.readLine)
    }
    in.close
    out.flush
  }

【讨论】:

  • 我在这里作为“来源”参数的意思是什么? src/main/resources 中文件的短名称?我想打印一个简短的内置帮助文件,以防我的程序在没有参数的情况下被调用。所以,我复制了你的函数体,删除了 dest/out 以仅使用 println 打印到 stdout 并使用“help.txt”作为源。这给了我 java.io.Reader.. 中的 NullPointerException
  • 我认为这可以使用reader = io.Source.fromInputStream(in).getLines()out = new PrintWriter(dest)) 来缩短,那么你只需要reader foreach out.println
猜你喜欢
  • 2017-06-06
  • 1970-01-01
  • 2021-07-31
  • 1970-01-01
  • 2014-11-05
  • 2011-03-07
  • 2017-12-08
  • 2019-04-30
相关资源
最近更新 更多