#12 Kotlinで学ぶファイル読み書きの基本

Kotlinのファイル操作は、Javaの機能を引き継ぎつつ、より簡潔な専用の書き方が用意されています。この記事では、Kotlinにおけるファイル操作の基本と、実務でつまずきやすいポイントを解説します。

ファイルを読み込む

import java.io.File

val content = File("data.txt").readText()
println(content)

JavaのFilesクラスより簡潔に、Fileオブジェクトに対して直接readText()を呼び出せます。内部的にはJavaのFileクラスをそのまま使っているため、パス操作などJavaの知識もそのまま活かせます。

ファイルに書き込む

File("data.txt").writeText("こんにちは")

writeText()は呼び出すたびにファイルの中身を上書きします。既存の内容に追記したい場合は、代わりにappendText()を使います。

File("log.txt").appendText("実行しました\n")

1行ずつ読み込む

File("data.txt").forEachLine { line ->
    println(line)
}

readText()は一度にファイル全体をメモリへ読み込むため、サイズの大きいログファイルなどでは負荷が大きくなります。1行ずつ処理したい場合や、ファイルが大きい場合はforEachLineやuseLinesを使うと、メモリに乗せる量を抑えながら処理できます。

Kotlinならではの注意点

ファイル操作でエラーが起きる可能性がある点はJavaと同じですが、Kotlinには「チェック例外」の仕組みがないため、try・catchで対処するかどうかは、コンパイラに強制されず、自分の判断で決める必要があります。ファイルが存在しない可能性がある場面では、意識的にエラー処理を書くようにしましょう。

try {
    val content = File("data.txt").readText()
    println(content)
} catch (e: java.io.FileNotFoundException) {
    println("ファイルが見つかりませんでした")
}

また、文字コードを指定したい場合はreadText(Charsets.UTF_8)のように引数で渡せます。日本語を含むファイルを扱う際、環境によって既定の文字コードが異なることがあるため、明示的にUTF-8を指定しておくと文字化けを防げます。

まとめ

Kotlinのファイル操作はFileクラスのreadText()・writeText()・appendText()が基本で、Javaより簡潔に書けます。大きなファイルはforEachLineで1行ずつ処理し、存在しない可能性がある場面ではtry・catchでエラー処理を書き添えましょう。


本ページはプロモーションを含みます。

参考書籍(PR)

Kotlinをもっと学びたい方には「やさしいKotlin入門」がおすすめです。


PR

コードを書かずに自動化したい方へ

「学んだけど自分の作業に組み込む時間がない」という方向けに、ダブルクリックで動く Windows専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。

コメント

このブログの人気の投稿

#25 Rustで学ぶAI API(ChatGPT等)の呼び出し方の基本

#8 C++で学ぶ文字列操作の基本

#16 TypeScriptで学ぶ辞書型(マップ)の基本