#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専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。
コメント
コメントを投稿