如何从Scala中的资源文件夹中读取文件?

2023-12-21

我有一个如下所示的文件夹结构:

- main
-- java
-- resources 
-- scalaresources
--- commandFiles 

在该文件夹中我有我必须阅读的文件。 这是代码:

def readData(runtype: String, snmphost: String, comstring: String, specificType:  String): Unit = {
  val realOrInvFile = "/commandFiles/snmpcmds." +runtype.trim // these files are under commandFiles folder, which I have to read. 
    try {
      if (specificType.equalsIgnoreCase("Cisco")) {
        val specificDeviceFile: String = "/commandFiles/snmpcmds."+runtype.trim+ ".cisco"
        val realOrInvCmdsList = scala.io.Source.fromFile(realOrInvFile).getLines().toList.filterNot(line => line.startsWith("#")).map{
          //some code 
        }
        val specificCmdsList = scala.io.Source.fromFile(specificDeviceFile).getLines().toList.filterNot(line => line.startsWith("#")).map{
          //some code
        }
      }
    } catch {
      case e: Exception => e.printStackTrace
    }
  }
}

Scala 中的资源与 Java 中的资源完全一样。 最好遵循Java 最佳实践并将所有资源投入src/main/resources and src/test/resources.

文件夹结构示例:

testing_styles/
├── build.sbt
├── src
│   └── main
│       ├── resources
│       │   └── readme.txt

Scala 2.12.x && 2.13.x 读取资源

读取对象的资源Source提供了方法来自资源.

import scala.io.Source
val readmeText : Iterator[String] = Source.fromResource("readme.txt").getLines

阅读 2.12 之前的资源(由于 jar 兼容性,仍然是我的最爱)

要阅读资源,您可以使用getClass.getResource and getClass.getResourceAsStream .

val stream: InputStream = getClass.getResourceAsStream("/readme.txt")
val lines: Iterator[String] = scala.io.Source.fromInputStream( stream ).getLines

更好的错误反馈(2.12.x && 2.13.x)

为了避免无法调试的 Java NPE,请考虑:

import scala.util.Try
import scala.io.Source
import java.io.FileNotFoundException

object Example {

  def readResourceWithNiceError(resourcePath: String): Try[Iterator[String]] = 
    Try(Source.fromResource(resourcePath).getLines)
      .recover(throw new FileNotFoundException(resourcePath))
 }

很高兴知道

请记住获取资源作为流当资源是某个资源的一部分时也能正常工作jar, 获取资源,它返回一个经常用于创建文件的 URL 可能会导致出现问题。

生产中

在生产代码中,我建议确保再次关闭源。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从Scala中的资源文件夹中读取文件? 的相关文章

随机推荐

  • 高可靠性/可用性/安全性编码 - 我应该阅读哪些标准?

    我听说汽车行业有一个叫做 MISRA C 的东西 其他高可靠性 可用性 安全行业的相关标准是什么 比如 Space Aircraft 银行 金融 汽车 Medical 国防 军事 Adam 参观戈达德太空飞行中心及其编码标准 http so
  • 使用“mysql_fetch_row”从数据库检索结果并使用 PHP 和 mysqli 插入数组?

    我需要从几行检索数据 然后将结果插入到枚举数组中 这样我就可以使用 for 循环来回显它 我有这个 我已经连接到数据库 genres sql SELECT genreID FROM genres WHERE imdbID if stmt g
  • 如何基于Web服务更改android中的语言

    目前 我正在开发我正在使用的 Android 项目English作为主要语言 我在用着strings xml字符串常量文件 现在 我想根据网络服务动态更改语言 该服务将根据用户选择 在 设置 中 创建 我知道我们必须为每种语言创建单独的 s
  • 如何最好地设计具有多个过滤器的 REST API?

    作为一个个人编程项目 我正在抓取我大学的课程目录并以 REST API 的形式提供数据 我已成功抓取所有数据并将其存储在数据库中 现在正在开发 API 课程可以根据许多标准进行过滤 教师 学院 学分 时间 日期等 在这种情况下提供 API
  • 微风错误:非法构造 - 使用“或”组合检查

    我遇到了这个微风错误 非法构造 使用 或 来组合检查 在 Chrome 上加载实体的编辑页面时 当我刷新页面时 错误消息不再出现 此错误在我的网站上随机 不规则地发生 我无法使用指定的场景重现它 只是随机遇到它 我在 Breeze 代码中看
  • Nuxt中间件无限重定向问题

    您好 我正在尝试在我的 Nuxt 3 应用程序中执行这个中间件 我正在尝试遵循文档 但收到无限重定向错误 export default defineNuxtRouteMiddleware to from gt const user id 1
  • python TypeError:“列表”对象不可调用错误

    我是 python 新手 我试图理解这里的一个基本错误 我在下面的代码中收到 TypeError list object is not callable 错误 有人可以解释一下我的代码有什么问题吗 graph a b c b a c c b
  • 通过 AKS 群集中的负载均衡器访问服务

    我配置了一个集群 其中的服务 及其相关的 Pod 容器 全部部署到私有子网中 其中一个 Pod 代表应用程序的 UI 我定义了一个具有公共 IP 的负载均衡器来提供对 UI 的访问 至少这是我的意图 当我在浏览器中输入包含负载均衡器 IP
  • Angular Js+ TypeScript:如何创建动态表

    我是打字稿和角度的新手 我已经使用打字稿和角度js实现了一个模块 在其中我需要创建一个动态表 它将获取演示文稿的类型并相应地附加到我的视图 就像我之前在 C 中所做的那样 我在下面给出了我的 c 代码 private void ShowCu
  • 需要均匀分布的按钮行

    我尝试使用 3 行和 4 列将所有按钮水平均匀地隔开 但失败了 垂直的就好 下面是 3 种不同的按钮间隔尝试 我的 3 行每行 1 种 第一行拉伸图形 这是不需要的 第二行不拉伸但没有间距 图形之间需要间距 而第三行拉伸没有任何间距 请帮我
  • 使用 IoC 进行单元测试

    如何使用 IoC 容器进行单元测试 使用 IoC 管理大型解决方案 50 多个项目 中的模拟是否有用 有什么经验吗 有哪些 C 库适合在单元测试中使用它 一般来说 单元测试不需要 DI 容器 因为单元测试就是分离职责 考虑一个使用构造函数注
  • Mongoose 在启动时调用 EnsureIndex,但不建议这样做。那么为什么它是默认的呢?

    我无法理解一件事 当我们读到猫鼬文档 http mongoosejs com docs guide html 当您的应用程序启动时 Mongoose 会自动调用ensureIndex对于架构中每个定义的索引 虽然有利于开发 但建议在生产中禁
  • 获取 Windows 中本地计算机用户名列表

    如何使用 C 获取 Windows 中本地计算机用户名列表 using System Management SelectQuery query new SelectQuery Win32 UserAccount ManagementObje
  • ggplot2直方图中每个方面的不同断点

    一个 ggplot2 挑战的 latticist 需要帮助 在直方图中请求变量每面中断的语法是什么 library ggplot2 d data frame x c rnorm 100 10 0 1 rnorm 100 20 0 1 par
  • 基本教师登录的用例图

    我正在创建一个非常基本的用例图来显示教师登录 该登录包括一个忘记密码 如果用户忘记密码 和一个重置密码 如果他们希望在登录后重置密码 我的问题是以下用例图表创建 尤其是包含和扩展 这确实是非常基本的 通常 登录宁愿成为其他用例的先决条件 而
  • 通过 C# 和 SMO 检查并删除现有表

    我正在尝试按名称查找 SQL 表 如果存在则删除它 这一切都需要使用 SMO 在 C 中完成 更复杂的是 该表还有一个 dbo 以外的模式 最终该表将通过 SMO 创建 我可以正常工作 但我必须确保它不存在 然后才能重新创建它 我看到的所有
  • 如何尽可能高效地将存储在 RDD 列中的多个 json 表“缩减”为单个 RDD 表

    使用以下代码在数据帧中使用联合来并发访问附加行是否可以正常工作 目前显示类型错误 from pyspark sql types import schema StructType StructField owreg StringType Tr
  • Laravel 'like' 查询与 MongoDB 连接

    我在 laravel like 查询中遇到问题 我在 laravel 上有一个 MIS 数据库在 MongoDb 上 现在我的数据库有一个名为kw带有 urlencoded 关键字 例如cars 20in 20London 现在我的查询给出
  • pandas 处理 numpy timedelta64[ms]

    gt gt gt import pandas as pd gt gt gt pd version 0 11 0 gt gt gt import numpy as np gt gt gt np version 1 7 1 gt gt gt d
  • 如何从Scala中的资源文件夹中读取文件?

    我有一个如下所示的文件夹结构 main java resources scalaresources commandFiles 在该文件夹中我有我必须阅读的文件 这是代码 def readData runtype String snmphos