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șteappendText. - Uiți
\nla 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.