如何在没有外部依赖的情况下从类路径读取文件?

发布于 2024-11-09 21:24:58 字数 167 浏览 1 评论 0原文

Scala 中是否有一个单行代码可以从类路径读取文件而不使用外部依赖项(例如 commons-io)?

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

Is there a one-liner in Scala to read a file from classpath without using external dependencies, e.g. commons-io?

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

韵柒 2024-11-16 21:24:58
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()
val text = io.Source.fromInputStream(getClass.getResourceAsStream("file.xml")).mkString

If you want to ensure that the file is closed:

val source = io.Source.fromInputStream(getClass.getResourceAsStream("file.xml"))
val text = try source.mkString finally source.close()
童话 2024-11-16 21:24:58

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

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

val content: String  = scala.io.Source.fromInputStream(getClass.getClassLoader.getResourceAsStream("file.xml")).mkString

在 Scala 的其他版本中,源类可能位于其他类路径中

如果你只想获取资源:

val resource  = getClass.getClassLoader.getResource("file.xml")

If the file is in the resource folder (then it will be in the root of the class path), you should use the Loader class that it is too in the root of the class path.

This is the code line if you want to get the content (in scala 2.11):

val content: String  = scala.io.Source.fromInputStream(getClass.getClassLoader.getResourceAsStream("file.xml")).mkString

In other versions of Scala, Source class could be in other classpath

If you only want to get the Resource:

val resource  = getClass.getClassLoader.getResource("file.xml")
白衬杉格子梦 2024-11-16 21:24:58

只是一个更新,使用 Scala 2.13 可以做这样的事情:

import scala.io.Source
import scala.util.Using

Using.resource(getClass.getResourceAsStream("file.xml")) { stream =>
  Source.fromInputStream(stream).mkString
}

希望它可以帮助某人。

Just an update, with Scala 2.13 it is possible to do something like this:

import scala.io.Source
import scala.util.Using

Using.resource(getClass.getResourceAsStream("file.xml")) { stream =>
  Source.fromInputStream(stream).mkString
}

Hope it might help someone.

紅太極 2024-11-16 21:24:58

在 Scala 中读取整个文件? 中,@daniel-spiewak 提出了一种有点不同的方法,我个人比 @dacwe 的响应更喜欢这种方法。

// scala is imported implicitly
import io.Source._

val content = fromInputStream(getClass.getResourceAsStream("file.xml")).mkString

但我想知道它是否仍然是一句台词?

In Read entire file in Scala? @daniel-spiewak proposed a bit different approach which I personally like better than the @dacwe's response.

// scala is imported implicitly
import io.Source._

val content = fromInputStream(getClass.getResourceAsStream("file.xml")).mkString

I however wonder whether or not it's still a one-liner?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文