Scala中是否有单行程序从类路径中读取文件而不使用外部依赖项,例如:公地IO
IOUtils.toString(getClass.getClassLoader.getResourceAsStream("file.xml"), "UTF-8")
答案 0 :(得分:59)
val text = io.Source.fromInputStream(getClass.getResourceAsStream("file.xml")).mkString
答案 1 :(得分:6)
如果文件位于资源文件夹中(那么它将位于类路径的根目录中),您应该使用它在类路径根目录中的Loader类。
如果您想获取内容(在scala 2.11中),这是代码行:
val content: String = scala.io.Source.fromInputStream(getClass.getClassLoader.getResourceAsStream("file.xml")).mkString
在其他版本的Scala中,Source类可能位于其他类路径
中如果您只想获得资源:
val resource = getClass.getClassLoader.getResource("file.xml")
答案 2 :(得分:1)
只是一个更新,使用 Scala 2.13 可以做这样的事情:
import scala.io.Source
import scala.util.Using
Using.resource(getClass.getResourceAsStream("file.xml")) { stream =>
Source.fromInputStream(stream).mkString
}
希望它可以帮助某人。
答案 3 :(得分:0)
在Read entire file in Scala? @ daniel-spiewak提出了一种不同的方法,我个人比@ dacwe的回应更好。
// scala is imported implicitly
import io.Source._
val content = fromInputStream(getClass.getResourceAsStream("file.xml")).mkString
然而,我不知道它是否还是单行?