Files.readString în Java

Citește tot conținutul unui fișier text într-un singur String (implicit în UTF-8).

Sintaxă
static String readString(Path cale) throws IOException
static String readString(Path cale, Charset codare) throws IOException

Ce face Files.readString

Files.readString(cale) deschide fișierul, citește tot textul, îl închide și returnează un String. Este cea mai simplă metodă pentru fișiere mici și medii: configurări, șabloane, fișiere CSV scurte.

Implicit textul se citește ca UTF-8. Dacă fișierul are altă codare (de exemplu Windows-1250, folosită de programe vechi românești), dai al doilea argument: Charset.forName("windows-1250"). Dacă octeții nu sunt UTF-8 valid, metoda aruncă MalformedInputException.

Tot fișierul ajunge în memorie. Pentru fișiere foarte mari, citește-l rând cu rând cu Files.lines sau BufferedReader.

Parametri

Parametru Descriere
cale Calea fișierului.
codare Opțional: setul de caractere, implicit StandardCharsets.UTF_8.

Ce returnează

Conținutul fișierului ca String, cu tot cu sfârșiturile de rând.

Exemple

Exemplul 1: Citirea unui fișier cu diacritice

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;

public class Main {
    public static void main(String[] args) throws IOException {
        Path cale = Path.of("poezie.txt");
        Files.writeString(cale, "Pe lângă plopii fără soț\nAdesea am trecut;\n");

        String text = Files.readString(cale);
        System.out.print(text);
        System.out.println("Caractere: " + text.length());
        System.out.println("Rânduri: " + text.lines().count());
    }
}

Rezultat

Pe lângă plopii fără soț
Adesea am trecut;
Caractere: 43
Rânduri: 2

Exemplul 2: Configurare simplă din fișier

Citim tot textul, apoi îl împărțim în rânduri de forma cheie=valoare.

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;

public class Main {
    public static void main(String[] args) throws IOException {
        Path cale = Path.of("setari.txt");
        Files.writeString(cale, "oras=Cluj-Napoca\nlimba=ro\nmoneda=RON\n");

        for (String rand : Files.readString(cale).split("\n")) {
            String[] parti = rand.split("=", 2);
            System.out.println(parti[0] + " -> " + parti[1]);
        }
    }
}

Rezultat

oras -> Cluj-Napoca
limba -> ro
moneda -> RON

Greșeli frecvente

  • Citești cu readString un fișier de mai mulți gigaocteți: rămâi fără memorie (OutOfMemoryError). Citește-l pe rânduri.
  • Citești un fișier binar (imagine, PDF) cu readString: primești MalformedInputException. Pentru octeți folosește Files.readAllBytes.
  • Uiți că textul se termină de obicei cu \n. Folosește strip() dacă vrei doar valoarea.

Comenzi înrudite

  • Files.writeString: Scrie un text într-un fișier (UTF-8): îl creează sau îl suprascrie; cu StandardOpenOption.APPEND adaugă la final.
  • Files.readAllLines: Citește un fișier text și returnează o listă cu rândurile lui, fără caracterele de sfârșit de rând.
  • Files.lines: Citește un fișier rând cu rând, ca Stream<String>; potrivit pentru fișiere mari. Se închide cu try-with-resources.
  • StandardCharsets: Constante pentru codările de text garantate în orice Java; UTF_8 este codarea potrivită pentru diacriticele românești.
  • Files: Clasa cu metode statice pentru lucrul cu fișiere și foldere: citire, scriere, copiere, mutare, ștergere, listare.