问题描述
|
Scala中是否有一种方法可以从类路径读取文件而无需使用外部依赖项,例如commons-io?
IOUtils.toString(getClass.getClassLoader.getResourceAsStream(\"file.xml\"),\"UTF-8\")
解决方法
val text = io.Source.fromInputStream(getClass.getResourceAsStream(\"file.xml\")).mkString
如果要确保文件已关闭:
val source = io.Source.fromInputStream(getClass.getResourceAsStream(\"file.xml\"))
val text = try source.mkString finally source.close()
,如果文件位于资源文件夹中(那么它将位于类路径的根目录中),则应该使用Loader类,因为它也位于类路径的根目录中。
如果要获取内容,这是代码行(在scala 2.11中):
val content: String = scala.io.Source.fromInputStream(getClass.getClassLoader.getResourceAsStream(\"file.xml\")).mkString
在其他版本的Scala中,Source类可以在其他classpath中
如果您只想获取资源:
val resource = getClass.getClassLoader.getResource(\"file.xml\")
,在阅读Scala中的整个文件? @ daniel-spiewak提出了一种不同的方法,我个人喜欢@dacwe的回复。
// scala is imported implicitly
import io.Source._
val content = fromInputStream(getClass.getResourceAsStream(\"file.xml\")).mkString
但是,我想知道它是否仍然是单线的?