我已经使用Maven设置了我的Scala项目,现在我正在编写测试,并且需要在资源路径的子目录下访问文件,就像:
src/test/resource/abc/123.sql
现在我正在做以下操作:
val relativepath = "/setup/setup/script/test.sql"
val path = getClass.getResource(relativepath).getPath
println(path)
但这指向SRC/MAIN/RESOUTION文件夹,而不是测试资源,任何人都知道我在这里做错了什么?
就像在java中一样,最好将资源文件放在src/main/resources
和src/test/resources
下,因为Scala提供了从检索资源文件的不错的API。
考虑到您将test.sql
文件放在src/test/resources/setup/setup/script/test.sql
下,您可以通过以下内容轻松读取文件:
Scala 2.12
import scala.io.Source
val relativePath = "setup/setup/script/test.sql"
val sqlFile : Iterator[String] = Source.fromResource(relativePath).getLines
先验Scala版本
import scala.io.Source
val relativePath = "setup/setup/script/test.sql"
val stream : InputStream = getClass.getResourceAsStream(relativePath)
val sqlFile : Iterator[String] = Source.fromInputStream(stream).getLines
这样做,您甚至可以将相同的文件放在src/main/resources
中相同的相对路径下。在尝试访问测试中的资源文件时,将考虑src/test/resources
的文件。
我希望这很有帮助。