如何从没有外部依赖关系的类路径中读取文件?

时间:2011-05-25 08:45:13

标签: string scala classpath

Scala中是否有单行程序从类路径中读取文件而不使用外部依赖项,例如:公地IO

IOUtils.toString(getClass.getClassLoader.getResourceAsStream("file.xml"), "UTF-8")

4 个答案:

答案 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
然而,我不知道它是否还是单行?