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

mbd*_*dev 31 string scala classpath

在Scala中是否有一个单行程序从classpath读取文件而不使用外部依赖项,例如commons-io?

IOUtils.toString(getClass.getClassLoader.getResourceAsStream("file.xml"), "UTF-8")
Run Code Online (Sandbox Code Playgroud)

dac*_*cwe 60

val text = io.Source.fromInputStream(getClass.getResourceAsStream("file.xml")).mkString
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这将使文件句柄保持打开状态,即使在生成字符串之后也是如此. (3认同)

fhu*_*tas 6

如果文件位于资源文件夹中(那么它将位于类路径的根目录中),您应该使用它也位于类路径根目录中的Loader类.

如果要获取内容,则这是代码行(在scala 2.11中):

val content: String  = scala.io.Source.fromInputStream(getClass.getClassLoader.getResourceAsStream("file.xml")).mkString
Run Code Online (Sandbox Code Playgroud)

在其他版本的Scala中,Source类可以在其他类路径中

如果您只想获取资源:

val resource  = getClass.getClassLoader.getResource("file.xml")
Run Code Online (Sandbox Code Playgroud)