Skip to Content
Kotlin📘 Ngôn ngữ Kotlin📁 Đọc và Ghi File

Đọc và Ghi File trong Kotlin

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


💡 Khái niệm

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!")

📝 Đọc File

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) } }

📝 Ghi File

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") }

🔧 Kiểm tra File

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

📁 Thao tác thư mục

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) }

🛠️ Thực hành

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) } }

⚠️ Lưu ý

[!TIP] Dùng use để tự động close resources:

File("test.txt").bufferedReader().use { reader -> reader.readLine() } // Tự động close

✅ Checklist

  • Đọ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

Last updated on