1.概要

この簡単なチュートリアルでは、Kotlinでファイルを読むためのさまざまな方法について学びます。

ファイル全体を

String、

として読み込む場合と、個々の行のリストに読み込む場合の両方の使用例について説明します。

2.ファイルを読む

まずKotlinが読み込む入力ファイルを作りましょう。

Kotlin.in

というファイルを作成し、コードでアクセスできるディレクトリに配置します。

ファイルの内容は次のようになります。

Hello to Kotlin. It's:
1. Concise
2. Safe
3. Interoperable
4. Tool-friendly

それでは、このファイルを読むためのさまざまな方法を見てみましょう。上記で作成したファイルのフルパスを次の各メソッドへの入力として渡す必要があります。

2.1.

forEachLine

  • 指定されたhttps://docs.oracle.com/javase/8/docs/api/java/nio/charset/Charset.html[charset](デフォルトはUTF-8)を使用してファイルを1行ずつ読み取ります** 。各行に対するアクション

fun readFileLineByLineUsingForEachLine(fileName: String)
  = File(fileName).forEachLine { println(it) }

2.2.

useLines

与えられたブロックコールバックを呼び出し、ファイル内のすべての行のシーケンスを与えます

処理が完了すると、ファイルは閉じられます。

fun readFileAsLinesUsingUseLines(fileName: String): List<String>
  = File(fileName).useLines { it.toList() }

2.3.

bufferedReader

  • ファイルの内容を読み取るための新しい


    BufferedReader


    を返します。


BufferedReader

を取得したら、その中のすべての行を読むことができます。

fun readFileAsLinesUsingBufferedReader(fileName: String): List<String>
  = File(fileName).bufferedReader().readLines()

2.4.

readLines

  • ファイルの内容を行のリストとして直接読み取ります。**

fun readFileAsLinesUsingReadLines(fileName: String): List<String>
  = File(fileName).readLines()

この方法は大きなファイルには使用しないことをお勧めします。

2.5.

inputStream

  • ファイルの新しい


    FileInputStream


    を作成し、結果として返します。

入力ストリームを取得したら、それをバイトに変換してから完全な

String

に変換できます。

fun readFileAsTextUsingInputStream(fileName: String)
  = File(fileName).inputStream().readBytes().toString(Charsets.UTF__8)

2.6. readText

  • ファイルの内容全体を

    String

    として読み取ります。** 指定されたhttps://docs.oracle.com/javase/8/docs/api/java/nio/charset/Charset.html[charset](デフォルトはUTF-8) )

fun readFileDirectlyAsText(fileName: String): String
  = File(fileName).readText(Charsets.UTF__8)

この方法は大きなファイルにはお勧めできません。内部サイズには2 GBのファイルサイズがあります。

3.まとめ

この記事では、Kotlinでファイルを読むためのさまざまな方法を見ました。

ユースケースに応じて、ファイルを1行ずつ読み込むか、テキストとして全体を読み込むかを選択できます。

この記事のソースコードは以下のhttps://github.com/eugenp/tutorials/tree/master/core-kotlin[GitHubリポジトリ]にあります。