Kotlin では Java で用意されたクラスライブラリをそのまま使うことができます。しかし、Kotlin 特有の機能では、Java で用意されたクラスライブラリが Kotlin のために拡張されており Java の時よりもさらに便利に使うことができます。
今回のブログでは、Kotlin 特有の機能の中から File クラスについて取り上げたいと思います。
Kotlin を開発するには統合開発環境である IntelliJ が便利です。
私の方で IntelliJ のインストール手順を記事にしましたので気になる方はこちらからどうぞ。
広告
java.io.Fileクラスの拡張
Java では File クラスの引数にファイルパスを指定することで、指定したファイルのファイル情報を取り出したりいろんなことができるようになっています。
Java では File クラスから直接その内容を読み書きしたりすることはできませんでした。
Kotlin では、この File クラスにテキストを読み書きするためのメソッドを拡張しています。
File インスタンスを作成するだけでテキストファイルの読み書きが行えるようになっています。
テキストファイルの読み込み
テキストファイルを読み込む処理は File クラスの「readText」というメソッドを使用します。
- テキストファイルは下記のデータを使っています。
(resources の中に Momotaro.txt というファイル名で保存してあります)
- Momotaro.txt から読み込んだテキストデータを出力した処理が下記のとおりとなります。
import java.io.File
fun main(args: Array<String>) {
val fpath = "src/main/resources/Momotaro.txt"
val f = File(fpath)
runCatching {
val re = f.readText(Charsets.UTF_8)
println(re)
}
}
runCatching は Result オブジェクトを返し例外や結果を取得することができます。
- 実行結果は下記のとおりです。
むかしむかし、あるところに、おじいさんとおばあさんが住んでいました。
おじいさんは山へしばかりに、おばあさんは川へせんたくに行きました。
おばあさんが川でせんたくをしていると、ドンブラコ、ドンブラコと、大きな桃が流れてきました。
Process finished with exit code 0
テキストファイルの書き込み
テキストファイルの書き込み処理は File クラスの「writeText」「appendText」というメソッドを使用します。
- テキストファイルは下記のデータを使っています。
(resources の中に Momotaro.txt というファイル名で保存してあります。
- Momotaro.txt から1行ずつ読み込んだテキストデータに行番号を付与して書き込みした処理が下記のとおりとなります。
import java.io.File
fun main(args: Array<String>) {
val frpath = "src/main/resources/Momotaro.txt"
val fwpath = "src/main/resources/Momotaro_カウント付.txt"
val fr = File(frpath)
val fw = File(fwpath)
var c = 0
runCatching {
// 空のファイルを再作成
// (これを実行しないと実行する度に追記されてしまう)
fw.writeText("")
// 1行ずつ読み込む
// (読み込んだ行は line に入る)
fr.forEachLine {
line -> fw.appendText("${++c}: ${line}\r\n")
}
}
}
- 実行結果は下記のとおりです。
参考書籍
こちらの書籍を参考にさせて頂きました。
おわりに
java.io.File を拡張した Kotlin の File クラスは、File クラスからメソッドを呼ぶだけでファイルの読み書きが行えるという非常に便利なクラスでした。
今回は紹介していませんがバイナリ形式のファイル読み書きについても簡単に実装できるようになっています。バイナリ形式の読み書きができる「readBytes、writeBytes」メソッドについては今回取り上げませんが、気になる方は検索してみて下さいね!もちろん紹介させて頂いた書籍ではバイナリ形式の読み書きについても詳しく解説されていますので気になる方は書籍を確認してみて下さいね!
最後までお読み頂きありがとうございました。
・「appendText」はファイルに追記書き込みします。