Kotlin File Handling Tutorial: Reading Files, Writing Files, and Serialization


This Kotlin File Handling tutorial explains how to read and write files using Kotlin and Java I/O APIs, along with basic serialization and deserialization techniques. The chapter includes practical examples and best practices to help developers safely handle file operations in Kotlin applications.

Kotlin File Handling – Complete Tutorial

Reading Files

Kotlin provides convenient extensions over Java I/O to read files easily.

Reading Entire File as Text


import java.io.File

fun main() {
val content = File("sample.txt").readText()
println(content)
}

Reading File Line by Line


import java.io.File

fun main() {
File("sample.txt").forEachLine {
println(it)
}
}

Best Practices for Reading Files

  1. Handle file-related exceptions using try-catch.
  2. Use buffered reading for large files.
  3. Always validate file paths.

Writing Files

Files can be written using Kotlin’s standard library functions.

Writing Text to a File


import java.io.File

fun main() {
File("output.txt").writeText("Hello Kotlin File Handling")
}

Appending Text to a File


import java.io.File

fun main() {
File("output.txt").appendText("\nAppending new line")
}

Best Practices for Writing Files

  1. Avoid overwriting files unintentionally.
  2. Use append mode when required.
  3. Close resources properly (use use {} when working with streams).

Serialization and Deserialization

Serialization is the process of converting an object into a byte stream, and deserialization is restoring it back to an object.

Serializable Data Class


import java.io.Serializable

data class User(val name: String, val age: Int) : Serializable

Serialization Example


import java.io.*

fun main() {
val user = User("Muni", 35)
val file = File("user.ser")

ObjectOutputStream(FileOutputStream(file)).use {
it.writeObject(user)
}
}

Deserialization Example


import java.io.*

fun main() {
val file = File("user.ser")

val user = ObjectInputStream(FileInputStream(file)).use {
it.readObject() as User
}

println(user)
}

Best Practices for Serialization

  1. Use Serializable only when needed.
  2. Handle ClassNotFoundException and IOException.
  3. Prefer JSON serialization (Gson, Jackson, Kotlinx Serialization) for modern applications.

Summary

This chapter explained file handling in Kotlin, including reading files, writing files, and basic object serialization and deserialization. Proper file handling ensures data persistence, reliability, and security in Kotlin applications.