【Scala】Scala ~ ファイルハンドリング ~

■ はじめに

https://dk521123.hatenablog.com/entry/2023/03/16/012034
https://dk521123.hatenablog.com/entry/2023/03/21/003817

でファイルのオープンなどを行ったので、
基本的なところを整理した。

目次

【1】変換
 1)Byte[] to InpiutStream
 2)Byte[] to InpiutStream
【2】Scalaの try-with-resources

【1】変換

1)Byte[] to InpiutStream

* JavaのByteArrayInputStreamを使用する

https://docs.oracle.com/javase/jp/8/docs/api/java/io/ByteArrayInputStream.html

* 以下の関連記事で、S3バケットにあるYAMLファイルを
 Scalaのクラスに変換するのに使用した

https://dk521123.hatenablog.com/entry/2023/03/24/211033

// より抜粋
import java.io.ByteArrayInputStream

  def readYaml[T: ClassTag](inputPath: Array[Byte]): T = {
    // reader: Array[Byte]
    val reader = new ByteArrayInputStream(inputPath)

参考文献
https://hacknote.jp/archives/4724/

2)ByteBuffer to Byte[]

import java.nio.ByteBuffer

    // secretValue: ByteBuffer
    val secretValue = secretValueResponse.getSecretBinary()
    val secretValueAsBytes = new Array[Byte](secretValue.remaining)
    // return Array[Byte]
    secretValue.get(secretValueAsBytes)

参考文献
https://stackoverflow.com/questions/28744096/convert-bytebuffer-to-byte-array-java

ByteBuffer buf = ...
byte[] arr = new byte[buf.remaining()];
buf.get(arr);

【2】Scalaの try-with-resources

* C# でいう using

https://qiita.com/ka2kama/items/cd846b15fbb56cdbc9ea

Scala 2.12以前

* そういった機構はない...

Scala 2.13

 * Scala 2.13.0からは標準ライブラリにscala.util.Usingオブジェクトが追加
 => 以下の関連記事の例3で使用した

関連記事

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/24/000000
Scala ~ 基本編 / Option型 ~
https://dk521123.hatenablog.com/entry/2023/03/09/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/03/08/000000
Scala ~ 基本編 / 正規表現
https://dk521123.hatenablog.com/entry/2023/03/18/034704
Scala ~ 基本編 / ジェネリック
https://dk521123.hatenablog.com/entry/2023/03/21/003817
Scala ~ ファイル名・パスの扱い ~
https://dk521123.hatenablog.com/entry/2023/03/11/000000
Scala ~ ファイルの読み書き ~
https://dk521123.hatenablog.com/entry/2023/04/07/000000
ScalaYAML
https://dk521123.hatenablog.com/entry/2023/03/16/012034
ScalaAWS SDK
https://dk521123.hatenablog.com/entry/2023/03/24/211033