ファイル入出力の基本
Kotlinでは、標準ライブラリを活用して簡単にファイルの読み書きができます。特にjava.io
やkotlin.io
パッケージを使用すると、シンプルなコードでファイル操作が可能です。
ファイルの読み込み
ファイルを読み込む方法はいくつかあります。最も簡単なのは、readText()
を使ってファイルの内容を文字列として取得する方法です。
import java.io.File
fun main() {
val file = File("example.txt")
val content = file.readText()
println(content)
}
この方法はファイル全体を一度に読み込むため、大きなファイルには向いていません。
readLines()
を使った行ごとの読み込み
readLines()
メソッドを使用すると、ファイルの各行をリストとして取得できます。
val lines = File("example.txt").readLines()
lines.forEach { println(it) }
useLines()
を使った効率的な読み込み
メモリ効率を考慮する場合は、useLines()
を使用するとストリームを活用できます。
File("example.txt").useLines { lines ->
lines.forEach { println(it) }
}
ファイルの書き込み
ファイルにデータを書き込むには、writeText()
やappendText()
を使用します。
writeText()
でファイルを新規作成または上書き
val file = File("output.txt")
file.writeText("Hello, Kotlin!")
appendText()
で既存のファイルに追記
file.appendText("\nThis is a new line.")
ストリーム処理の基礎
ファイルが大きい場合、ストリームを使ってデータを少しずつ処理することが重要です。
BufferedReaderを使った効率的な読み込み
import java.io.BufferedReader
import java.io.File
fun main() {
val file = File("largeFile.txt")
file.bufferedReader().use { reader ->
reader.forEachLine { println(it) }
}
}
BufferedWriterを使った効率的な書き込み
import java.io.BufferedWriter
import java.io.File
fun main() {
val file = File("output.txt")
file.bufferedWriter().use { writer ->
writer.write("This is a buffered write operation.")
}
}
ファイル入出力の応用
CSVファイルの読み書き
CSV(カンマ区切り値)ファイルを読み書きするには、行を分割して処理するのが一般的です。
CSVの読み込み
val csvFile = File("data.csv")
csvFile.readLines().forEach { line ->
val values = line.split(",")
println(values)
}
CSVの書き込み
val outputCsv = File("output.csv")
outputCsv.writeText("Name, Age, City\n")
outputCsv.appendText("Alice, 30, Tokyo\n")
outputCsv.appendText("Bob, 25, Osaka\n")
バイナリファイルの読み書き
バイナリデータを扱う場合は、InputStream
やOutputStream
を使用します。
バイナリファイルの読み込み
import java.io.File
fun main() {
val file = File("image.png")
val bytes = file.readBytes()
println("Read ${bytes.size} bytes")
}
バイナリファイルの書き込み
val file = File("copy.png")
file.writeBytes(bytes)
まとめ
本記事では、Kotlinにおけるファイル入出力とストリーム処理について解説しました。
- テキストファイルの基本的な読み書き(
readText()
,writeText()
など) - ストリームを活用した効率的な処理(
bufferedReader()
,useLines()
など) - CSVファイルの操作(
split()
,appendText()
など) - バイナリファイルの処理(
readBytes()
,writeBytes()
)
ファイル処理の基本を押さえ、安全かつ効率的なプログラムを書けるようになりましょう。