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()saumkdir(): dacă efalse, 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.