Scala 中如何读取 CSV 文件

作者:rousong2024.01.18 07:47浏览量:8

简介:Scala 是一种功能强大的编程语言,可以轻松地处理 CSV 文件。在 Scala 中,我们可以使用内置的 CSV 库或者使用第三方库如 Apache Commons CSV 或 OpenCSV 来读取 CSV 文件。以下是使用内置 CSV 库和 Apache Commons CSV 库的示例代码。

使用内置 CSV 库读取 CSV 文件

在 Scala 中,我们可以使用内置的 CSV 库来读取 CSV 文件。以下是一个简单的示例代码,演示如何使用内置 CSV 库读取 CSV 文件:

  1. import scala.io.Source
  2. object ReadCSVExample {
  3. def main(args: Array[String]): Unit = {
  4. val csvFilePath = "path/to/csv/file.csv"
  5. val csvData = Source.fromFile(csvFilePath).getLines().map(_.split(",")).toList
  6. for (row <- csvData) {
  7. println(row.mkString(","))
  8. }
  9. }
  10. }

在上面的代码中,我们首先使用 Source.fromFile 方法读取 CSV 文件,然后使用 getLines 方法获取文件的每一行,并使用 map 方法将每一行分割成多个字段。最后,我们使用 println 方法打印每一行的内容。

使用 Apache Commons CSV 库读取 CSV 文件

Apache Commons CSV 是一个流行的用于处理 CSV 文件的库,提供了更多高级功能。要使用 Apache Commons CSV,请先在项目中添加以下依赖项:

  1. libraryDependencies += "org.apache.commons" % "commons-csv" % "1.8"

以下是一个使用 Apache Commons CSV 库读取 CSV 文件的示例代码:

  1. import org.apache.commons.csv._
  2. import java.io.{FileReader, File}
  3. object ReadCSVExample {
  4. def main(args: Array[String]): Unit = {
  5. val csvFilePath = "path/to/csv/file.csv"
  6. val file = new File(csvFilePath)
  7. val reader = new FileReader(file)
  8. val parser = new CSVParser(reader, CSVFormat.DEFAULT)
  9. try {
  10. for (record <- parser.getRecords) {
  11. println(record.mkString(","))
  12. }
  13. } finally {
  14. parser.close()
  15. }
  16. }
  17. }

在上面的代码中,我们首先创建一个 FileReader 对象,然后使用 CSVParser 类解析 CSV 文件。CSVFormat.DEFAULT 指定了默认的 CSV 格式。然后,我们使用 getRecords 方法获取所有记录,并使用 mkString 方法将每个记录转换为字符串。最后,我们使用 println 方法打印每个记录的内容。
注意:在使用 Apache Commons CSV 时,需要注意异常处理和资源关闭,以避免资源泄漏和错误处理问题。在实际应用中,请确保在合适的位置处理异常和关闭资源。