Ce face Files.writeString
Files.writeString(cale, text) scrie textul în fișier. Dacă fișierul nu există, îl creează; dacă există, îi înlocuiește tot conținutul. Folderul în care se află fișierul trebuie să existe deja.
Comportamentul se schimbă cu opțiuni din StandardOpenOption: APPEND adaugă la sfârșit (cu CREATE, ca să creeze fișierul dacă lipsește), iar CREATE_NEW refuză să suprascrie un fișier existent (aruncă FileAlreadyExistsException).
Metoda nu adaugă \n la final; pune-l tu dacă vrei rânduri. Returnează calea primită, ca să poți continua cu ea.
Parametri
| Parametru | Descriere |
|---|---|
cale |
Fișierul în care se scrie. |
text |
Textul de scris. |
optiuni |
Opțional: StandardOpenOption.APPEND, CREATE, CREATE_NEW etc. |
Ce returnează
Calea fișierului (Path).
Exemple
Exemplul 1: Suprascriere și adăugare
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardOpenOption;
public class Main {
public static void main(String[] args) throws IOException {
Path jurnal = Path.of("jurnal.txt");
Files.writeString(jurnal, "Luni: am învățat Java\n");
Files.writeString(jurnal, "Marți: am învățat Stream\n");
System.out.print("După două scrieri:\n" + Files.readString(jurnal));
Files.writeString(jurnal, "Miercuri: am învățat Files\n", StandardOpenOption.APPEND);
System.out.print("După APPEND:\n" + Files.readString(jurnal));
}
}
Rezultat
După două scrieri:
Marți: am învățat Stream
După APPEND:
Marți: am învățat Stream
Miercuri: am învățat Files
Exemplul 2: CREATE_NEW: nu suprascrie din greșeală
A doua scriere eșuează, pentru că fișierul există deja.
import java.io.IOException;
import java.nio.file.FileAlreadyExistsException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardOpenOption;
public class Main {
public static void main(String[] args) throws IOException {
Path factura = Path.of("factura-001.txt");
Files.writeString(factura, "Client: Ana Popescu\nTotal: 250 lei\n", StandardOpenOption.CREATE_NEW);
System.out.println("Factura a fost creată.");
try {
Files.writeString(factura, "altceva", StandardOpenOption.CREATE_NEW);
} catch (FileAlreadyExistsException e) {
System.out.println("Există deja: " + e.getMessage());
}
System.out.print(Files.readString(factura));
}
}
Rezultat
Factura a fost creată.
Există deja: factura-001.txt
Client: Ana Popescu
Total: 250 lei
Greșeli frecvente
- Te aștepți ca a doua apelare să adauge textul. Fără
APPEND, conținutul vechi se pierde. - Folosești
APPENDsingur pe un fișier care nu există: primeștiNoSuchFileException. Adaugă șiStandardOpenOption.CREATE. - Scrii într-un folder care nu există:
NoSuchFileException. Creează-l înainte cuFiles.createDirectories.
Comenzi înrudite
Files.readString: Citește tot conținutul unui fișier text într-un singur String (implicit în UTF-8).Files.write: Scrie într-un fișier fie un tablou de octeți, fie o listă de rânduri (fiecare urmat de sfârșit de rând).Files.newBufferedReader: Deschide un fișier pentru citire pe rânduri (BufferedReader) sau pentru scriere în bucăți (BufferedWriter), în UTF-8.Files.createDirectory: createDirectory creează un singur folder; createDirectories creează și folderele părinte lipsă, fără eroare dacă există.