Bỏ qua để đến nội dung

📁 Đọc và Ghi File

🎯 Mục tiêu: Học cách đọc/ghi file với Kotlin idiomatic APIs.


Kotlin cung cấp extension functions cho java.io.File giúp thao tác file dễ dàng.

import java.io.File
val content = File("test.txt").readText()
File("output.txt").writeText("Hello Kotlin!")

val file = File("data.txt")
// Đọc toàn bộ thành String
val content = file.readText()
// Đọc thành List<String> theo dòng
val lines = file.readLines()
// Đọc và xử lý từng dòng (memory efficient)
file.forEachLine { line ->
println(line)
}
// Đọc với sequence (lazy)
file.useLines { lines ->
lines.filter { it.isNotBlank() }
.map { it.uppercase() }
.forEach { println(it) }
}

val file = File("output.txt")
// Ghi text (overwrite)
file.writeText("Hello World")
// Append text
file.appendText("\nNew line")
// Ghi lines
file.writeText(listOf("Line 1", "Line 2", "Line 3").joinToString("\n"))
// Buffered writing
file.bufferedWriter().use { writer ->
writer.write("Line 1\n")
writer.write("Line 2\n")
}

val file = File("test.txt")
println(file.exists()) // File tồn tại?
println(file.isFile) // Là file?
println(file.isDirectory) // Là thư mục?
println(file.canRead()) // Có thể đọc?
println(file.canWrite()) // Có thể ghi?
println(file.length()) // Kích thước (bytes)
println(file.name) // Tên file
println(file.extension) // Extension
println(file.absolutePath) // Đường dẫn tuyệt đối

val dir = File("myFolder")
// Tạo thư mục
dir.mkdir() // Tạo 1 cấp
dir.mkdirs() // Tạo nhiều cấp
// Liệt kê files
dir.listFiles()?.forEach {
println("${it.name} - ${if (it.isDirectory) "DIR" else "FILE"}")
}
// Lọc files
dir.listFiles { _, name -> name.endsWith(".txt") }
// Walk directory tree
dir.walkTopDown().forEach { println(it) }

fun main() {
// TODO: Đọc file CSV và parse thành danh sách users
// Format: name,age,email
}

Lời giải:

import java.io.File
data class User(val name: String, val age: Int, val email: String)
fun main() {
val users = File("users.csv")
.readLines()
.drop(1) // Skip header
.map { line ->
val (name, age, email) = line.split(",")
User(name, age.toInt(), email)
}
users.forEach { println(it) }
}


  • Đọc file với readText(), readLines()
  • Ghi file với writeText(), appendText()
  • Xử lý file lớn với useLines
  • Dùng use để tự động close

Tiếp theo: Working with JSON