You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scala中如何根据文件路径列表拼接处理多个资源流内容

问题根因

你使用的foreach方法仅用于遍历执行无返回值的操作,返回类型为Unit,无法收集每个文件的处理结果进行拼接,所以无法得到预期的字符串数组。

正确实现方案

使用flatMap替代foreach,可以将每个文件处理后得到的Array[String]自动扁平化拼接为最终的单个数组,同时建议添加资源释放逻辑避免资源泄漏:

import scala.io.Source

val filePathList = List("/File1", "/File2")
val inputStreamAsString: Array[String] = filePathList
  .flatMap { filePath =>
    // 读取对应路径的资源流
    val inputStream = getClass.getResourceAsStream(filePath)
    val source = Source.fromInputStream(inputStream)
    try {
      source.mkString.split(",")
        .filter(_.trim.nonEmpty)
    } finally {
      // 手动关闭Source避免资源泄漏
      source.close()
    }
  }.toArray

代码说明

  • flatMap会遍历每个文件路径,对每个路径执行对应处理逻辑得到一个Array[String],最后把所有数组合并为一个大的集合,最后调用toArray转为你需要的数组类型
  • 增加try-finally块保证Source资源被正确关闭,避免长期运行时出现资源泄漏问题
  • 简化了过滤逻辑的写法,_.trim.nonEmpty等价于原有queryStr => queryStr.trim.length != 0的效果

内容的提问来源于stack exchange,提问作者Anirban Goswami

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 10:06:03