File în Java

Clasa veche pentru căi de fișiere: exists verifică existența, getName dă numele, length mărimea în octeți.

Sintaxă
import java.io.File;

new File(String cale)
new File(File folder, String nume)
boolean exists()
String getName()
long length()

Ce face File

java.io.File reprezintă calea unui fișier sau folder, ca Path, dar este clasa mai veche (din Java 1.0). O întâlnești des în cod existent și în biblioteci. Crearea unui File nu creează fișierul pe disc.

exists() spune dacă fișierul sau folderul există. getName() returnează ultimul nume din cale (note.txt). length() dă mărimea în octeți, iar pentru un fișier inexistent dă 0, fără eroare.

Metodele lui File nu aruncă excepții detaliate: de obicei returnează false sau 0 când ceva nu merge. În cod nou se preferă Path și Files; conversia se face cu file.toPath() și path.toFile().

Parametri

Parametru Descriere
cale Calea, ca text.
folder, nume Un folder și numele unui element din el.

Ce returnează

exists: boolean. getName: String. length: long.

Exemple

Exemplul 1: Informații despre un fișier

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

public class Main {
    public static void main(String[] args) throws IOException {
        File f = new File("documente", "cerere.txt");
        System.out.println("Nume: " + f.getName());
        System.out.println("Cale: " + f.getPath());
        System.out.println("Există: " + f.exists() + ", mărime: " + f.length());

        Files.createDirectories(f.toPath().getParent());
        Files.writeString(f.toPath(), "Subsemnata Ana Popescu...");
        System.out.println("Există: " + f.exists() + ", mărime: " + f.length() + " octeți");
        System.out.println("Este fișier: " + f.isFile() + ", folderul este director: " + f.getParentFile().isDirectory());
    }
}

Rezultat

Nume: cerere.txt
Cale: documente/cerere.txt
Există: false, mărime: 0
Există: true, mărime: 25 octeți
Este fișier: true, folderul este director: true

Exemplul 2: De la File la Path și înapoi

O bibliotecă veche cere un File, dar restul codului folosește Path; conversia este directă.

import java.io.File;
import java.nio.file.Path;

public class Main {
    public static void main(String[] args) {
        Path p = Path.of("poze", "sinaia.jpg");
        File f = p.toFile();
        System.out.println(f.getName() + " în " + f.getParent());
        Path inapoi = f.toPath();
        System.out.println(inapoi.equals(p));
    }
}

Rezultat

sinaia.jpg în poze
true

Greșeli frecvente

  • Te bazezi pe length() ca să afli dacă fișierul există: un fișier gol și unul lipsă dau amândouă 0. Verifică exists().
  • Ignori valoarea returnată de delete() sau mkdir(): dacă e false, operația nu s-a făcut, iar programul nu află de ce.

Comenzi înrudite

  • File.listFiles: Returnează un tablou cu fișierele și folderele dintr-un folder, sau null dacă nu este folder ori nu poate fi citit.
  • File.mkdir: mkdir creează un folder, mkdirs și folderele părinte, delete șterge un fișier sau un folder gol; toate returnează true/false.
  • Path: Reprezintă calea unui fișier sau folder (ex. date/note.txt); nu verifică dacă fișierul există. toString o dă ca text.
  • Files.exists: Verifică dacă un fișier sau un folder există la calea dată; nu aruncă excepții.
  • Files.size: Returnează mărimea unui fișier în octeți (bytes); literele cu diacritice ocupă câte doi octeți în UTF-8.