Files în Java

Clasa cu metode statice pentru lucrul cu fișiere și foldere: citire, scriere, copiere, mutare, ștergere, listare.

Sintaxă
import java.nio.file.Files;
import java.nio.file.Path;

public final class Files

Ce face Files

Files (din pachetul java.nio.file) este punctul de pornire modern pentru fișiere. Are doar metode statice, care primesc un Path (calea fișierului): Files.readString(cale), Files.writeString(cale, text), Files.exists(cale), Files.copy(...), Files.delete(...) și multe altele.

Aproape toate metodele pot arunca IOException (fișier lipsă, lipsă de drepturi, disc plin). Java te obligă să tratezi excepția cu try/catch sau să o declari cu throws IOException în semnătura metodei.

Textul se citește și se scrie implicit în UTF-8, deci diacriticele românești funcționează fără setări speciale. Clasa mai veche java.io.File încă există, dar Files dă mesaje de eroare mai clare și are mai multe funcții.

Ce returnează

Este o clasă utilitară; fiecare metodă are propriul rezultat.

Exemple

Exemplul 1: Scrii, citești și ștergi un fișier

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 fisier = Path.of("salut.txt");

        Files.writeString(fisier, "Bună ziua din Iași!\n");
        System.out.println("Există: " + Files.exists(fisier));
        System.out.println("Mărime: " + Files.size(fisier) + " octeți");
        System.out.print("Conținut: " + Files.readString(fisier));

        Files.delete(fisier);
        System.out.println("Există după ștergere: " + Files.exists(fisier));
    }
}

Rezultat

Există: true
Mărime: 22 octeți
Conținut: Bună ziua din Iași!
Există după ștergere: false

Exemplul 2: Tratarea erorilor cu try/catch

Fișierul nu există, deci readString aruncă NoSuchFileException, o subclasă a lui IOException.

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

public class Main {
    public static void main(String[] args) {
        try {
            String text = Files.readString(Path.of("note.txt"));
            System.out.println(text);
        } catch (NoSuchFileException e) {
            System.out.println("Fișierul nu există: " + e.getMessage());
        } catch (IOException e) {
            System.out.println("Altă eroare: " + e);
        }
    }
}

Rezultat

Fișierul nu există: note.txt

Greșeli frecvente

  • Uiți de IOException: codul nu compilează („unreported exception”). Adaugă throws IOException sau un try/catch.
  • Încerci new Files(). Clasa nu are obiecte; apelezi direct Files.metoda(...).
  • Folosești căi scrise cu \ ca pe Windows. Path.of("date", "note.txt") pune separatorul corect pe orice sistem.

Comenzi înrudite

  • Path: Reprezintă calea unui fișier sau folder (ex. date/note.txt); nu verifică dacă fișierul există. toString o dă ca text.
  • Files.readString: Citește tot conținutul unui fișier text într-un singur String (implicit în UTF-8).
  • Files.writeString: Scrie un text într-un fișier (UTF-8): îl creează sau îl suprascrie; cu StandardOpenOption.APPEND adaugă la final.
  • Files.exists: Verifică dacă un fișier sau un folder există la calea dată; nu aruncă excepții.
  • IOException: Excepția verificată pentru erori de intrare/ieșire (fișier lipsă, fără drepturi, disc plin); trebuie prinsă sau declarată.
  • File: Clasa veche pentru căi de fișiere: exists verifică existența, getName dă numele, length mărimea în octeți.