Đọc và Ghi File trong Kotlin
1. Giới thiệu
Kotlin cung cấp extension functions tiện lợi để làm việc với files.
2. Import
import java.io.File3. Đọc toàn bộ file
fun main() {
val file = File("test.txt")
// Đọc toàn bộ nội dung
val content = file.readText()
println(content)
// Đọc thành danh sách dòng
val lines = file.readLines()
lines.forEach { println(it) }
// Đọc bytes
val bytes = file.readBytes()
}4. Ghi file
fun main() {
val file = File("output.txt")
// Ghi text (overwrite)
file.writeText("Hello, World!")
// Append text
file.appendText("\nNew line")
// Ghi bytes
file.writeBytes(byteArrayOf(72, 101, 108, 108, 111))
}5. Đọc file từng dòng
fun main() {
val file = File("large_file.txt")
// Đọc từng dòng (memory efficient)
file.forEachLine { line ->
println(line)
}
// Với useLines (auto-closes)
file.useLines { lines ->
lines.filter { it.isNotBlank() }
.forEach { println(it) }
}
}6. BufferedReader và BufferedWriter
fun main() {
// Đọc với buffered reader
File("input.txt").bufferedReader().use { reader ->
var line: String?
while (reader.readLine().also { line = it } != null) {
println(line)
}
}
// Ghi với buffered writer
File("output.txt").bufferedWriter().use { writer ->
writer.write("Line 1")
writer.newLine()
writer.write("Line 2")
}
}7. PrintWriter
fun main() {
File("output.txt").printWriter().use { writer ->
writer.println("Line 1")
writer.println("Line 2")
writer.printf("Formatted: %d%n", 42)
}
}8. Kiểm tra và quản lý files
fun main() {
val file = File("test.txt")
// Kiểm tra
println(file.exists())
println(file.isFile)
println(file.isDirectory)
println(file.length()) // Size in bytes
println(file.lastModified())
// Tạo/Xóa
file.createNewFile()
file.delete()
// Rename/Move
file.renameTo(File("new_name.txt"))
}9. Làm việc với Directories
fun main() {
val dir = File("my_folder")
// Tạo directory
dir.mkdir() // Tạo 1 cấp
dir.mkdirs() // Tạo nhiều cấp
// Liệt kê files
dir.listFiles()?.forEach { file ->
println("${file.name} - ${if (file.isDirectory) "DIR" else "FILE"}")
}
// Walk directory tree
dir.walk().forEach {
println(it.path)
}
}10. Xử lý lỗi
import java.io.IOException
fun main() {
val file = File("maybe_exists.txt")
try {
val content = file.readText()
println(content)
} catch (e: IOException) {
println("Error reading file: ${e.message}")
}
// Hoặc với runCatching
val result = runCatching { file.readText() }
result.onSuccess { println(it) }
.onFailure { println("Error: ${it.message}") }
}📝 Tóm tắt
readText(),readLines()để đọcwriteText(),appendText()để ghiuse {}tự động close resourcesforEachLine {}xử lý từng dòngFile.walk()duyệt recursiverunCatchingcho error handling
Last updated on