【Scala】Scala ~ ファイルの読み書き ~

■ はじめに

今更だが、Scalaのファイル入出力。

目次

【1】読み込み
 例1:一行づつ表示
【2】書き込み
 例1:テンプレートファイルを読み込み置換したものをファイル出力

【1】読み込み

例1:一行づつ表示

import scala.io.Source

object  Hello {
  def main(args: Array[String]) {
    val fileSource = Source.fromFile("C:/tmp/hello.txt")
    try {
      for (line <- fileSource.getLines) {
        println(line)
      }
    } finally {
      fileSource.close
    }
    println("Done...")
  }
}

C:/tmp/hello.txt

Hello
World
!!!

【2】書き込み

例1:テンプレートファイルを読み込み置換したものをファイル出力

import scala.io.Source
import java.nio.file.{Paths, Files}
import java.nio.charset.StandardCharsets

object  Hello {
  def main(args: Array[String]) {
    val fileSource = Source.fromFile("C:/tmp/template.txt")
    val wholeContent = fileSource.mkString
    var result = wholeContent.replaceAllLiterally("${{name}}", "Mike")
    result = result.replaceAllLiterally("${{today}}", "2023-04-08")
    println(result)

    // Write
    Files.write(
      Paths.get("C:/tmp/output.txt"),
      result.getBytes(StandardCharsets.UTF_8)
    )
    println("Done...")
  }
}

C:/tmp/template.txt

Hello, ${{name}}!!
${{name}} is a good person.
Today is ${{today}}.

C:/tmp/output.txt

Hello, Mike!!
Mike is a good person.
Today is 2023-04-08.

関連記事

Scala ~ 環境構築編 ~
https://dk521123.hatenablog.com/entry/2023/03/10/193805
Scala ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2023/03/12/184331
Scala ~ 基本編 / 文字列 ~
https://dk521123.hatenablog.com/entry/2023/01/07/000000
Scala ~ 基本編 / メソッド ~
https://dk521123.hatenablog.com/entry/2023/03/03/000000
Scala ~ 基本編 / クラス ~
https://dk521123.hatenablog.com/entry/2023/03/14/000857
Scala ~ 基本編 / コレクション ~
https://dk521123.hatenablog.com/entry/2023/03/13/000345
Scala ~ ファイルハンドリング ~
https://dk521123.hatenablog.com/entry/2023/01/03/000000
Scala ~ ファイル名・パスの扱い ~
https://dk521123.hatenablog.com/entry/2023/03/11/000000
ScalaYAML
https://dk521123.hatenablog.com/entry/2023/03/16/012034
ScalaJSON
https://dk521123.hatenablog.com/entry/2023/04/04/000733
ScalaJDBC / DB接続 ~
https://dk521123.hatenablog.com/entry/2023/03/26/000950
ScalaAWS SDK
https://dk521123.hatenablog.com/entry/2023/03/24/211033
ScalaAWS SDK / S3サンプル ~
https://dk521123.hatenablog.com/entry/2023/04/01/002005
ScalaAWS SDK / Secrets Managerサンプル ~
https://dk521123.hatenablog.com/entry/2023/04/03/012600
SBT ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2023/03/22/000000