File.readText în Kotlin

Fișiere (kotlin.io) Kotlin 1.0 (JVM)

readText citește tot conținutul unui fișier ca String; writeText îl scrie (înlocuind tot), appendText adaugă la final.

Sintaxă
fun File.readText(charset: Charset = Charsets.UTF_8): String
fun File.writeText(text: String, charset: Charset = Charsets.UTF_8)
fun File.appendText(text: String, charset: Charset = Charsets.UTF_8)

Ce face File.readText

Kotlin adaugă funcții simple peste clasa java.io.File. Creezi un obiect cu File("note.txt") (calea este relativă la directorul curent) și apoi: writeText(text) creează fișierul sau îi înlocuiește tot conținutul, appendText(text) adaugă la final fără să șteargă ce exista, iar readText() returnează tot conținutul ca un singur String.

Toate folosesc implicit codificarea UTF-8, deci diacriticele se salvează și se citesc corect. Fișierul este deschis și închis automat la fiecare apel. Dacă fișierul nu există, readText aruncă FileNotFoundException; verifică înainte cu exists().

Aceste funcții încarcă tot fișierul în memorie. Pentru fișiere foarte mari, citește rând cu rând cu forEachLine sau useLines.

Parametri

Parametru Descriere
text Pentru writeText/appendText: textul scris.
charset Codificarea; implicit UTF-8.

Ce returnează

readText: conținutul (String). writeText/appendText: nimic.

Exemple

Exemplul 1: Scriere, adăugare și citire

writeText creează fișierul cu primul rând, appendText adaugă al doilea, iar readText citește tot.

import java.io.File

fun main() {
    val fisier = File("note.txt")
    fisier.writeText("Ana: 9.50\n")
    fisier.appendText("Ion: 8.75\n")
    print(fisier.readText())
    println("Dimensiune: ${fisier.length()} octeți")
}

Rezultat

Ana: 9.50
Ion: 8.75
Dimensiune: 20 octeți

Exemplul 2: writeText înlocuiește conținutul

Al doilea writeText șterge ce era înainte. Doar appendText păstrează conținutul vechi.

import java.io.File

fun main() {
    val f = File("oras.txt")
    f.writeText("Iași")
    f.writeText("Cluj")
    println(f.readText())
    f.appendText(", Brașov")
    println(f.readText())
}

Rezultat

Cluj
Cluj, Brașov

Exemplul 3: Fișier care lipsește

Verificăm cu exists() înainte de citire, ca să nu apară excepția.

import java.io.File

fun main() {
    val f = File("setari.txt")
    val continut = if (f.exists()) f.readText() else "implicit"
    println("Setări: $continut")
    f.writeText("tema=întunecată")
    println("Setări: ${if (f.exists()) f.readText() else "implicit"}")
}

Rezultat

Setări: implicit
Setări: tema=întunecată

Greșeli frecvente

  • Folosești writeText într-o buclă ca să adaugi rânduri și rămâi doar cu ultimul. Pentru adăugare folosește appendText.
  • Uiți \n la final când adaugi rânduri cu appendText, iar textele se lipesc unul de altul.
  • Citești cu readText un fișier de câțiva GB și programul rămâne fără memorie. Citește-l pe rânduri.

Comenzi înrudite

  • File.readLines: Citește un fișier text și returnează lista rândurilor, fără caracterele de rând nou.
  • File.forEachLine: Parcurg un fișier rând cu rând, fără să-l încarce tot în memorie; fișierul se închide automat la final.
  • File.bufferedReader: Deschide un fișier pentru citire sau scriere cu buffer; se folosește cu use, ca să fie închis automat.
  • use: Folosește o resursă (fișier, conexiune) într-un bloc și o închide automat la final, chiar dacă apare o excepție.