2010-10-06 88 views
16

在SBT项目文件夹层次结构中我将我的Scala源代码放入src/main/scala中,并在src/tests/scala中进行测试。我打算把它放到src/main/resources和src/tests/resources中?什么是SBT项目中的“资源”文件夹?

+0

可能重复[如何得到W/SBT scalatest内的资源(http://stackoverflow.com/questions/5285898/how-to-get-a-resource-within-scalatest-w-sbt) – Suma 2014-05-06 10:20:42

回答

16

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

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

+0

谢谢迪伦。你可以链接到一个Scala(2.8)代码示例,我如何使用这些资源呢? – Ivan 2010-10-07 23:57:11

+1

这个重复的问题有一个简洁的例子:http://stackoverflow.com/questions/5285898/how-to-get-a-resource-within-scalatest-w-sbt – emchristiansen 2011-10-05 00:24:02

8

这里的复制存储资源的文本文件到本地文件系统的一个例子:

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 
    } 
+0

我打算把什么作为“源”参数这里? src/main/resources中文件的简短名称?我想打印一个简短的内置帮助文件,以防我的程序在没有参数的情况下被调用。所以,我复制了你的函数体,删除了dest/out以使用println打印到标准输出并使用“help.txt”作为源。这在java.io.Reader中给了我一个NullPointerException。 。 – Ivan 2010-11-12 04:45:45

+1

请参阅http://download.oracle.com/javase/6/docs/api/java/lang/Class.html#getResourceAsStream(java.lang.String) – 2010-11-12 11:15:10

+1

我认为可以使用'reader = io.Source .fromInputStream(in).getLines()','out = new PrintWriter(dest))',那么你所需要的只是'reader foreach out.println' – 2011-09-12 03:15:20

相关问题