Ce face Files.exists
Files.exists(cale) returnează true dacă la calea dată există ceva (fișier sau folder). Nu aruncă IOException, deci se poate folosi direct într-un if.
Files.notExists(cale) nu este mereu opusul: dacă Java nu poate afla (de exemplu, lipsesc drepturile), ambele dau false. Pentru a afla dacă e fișier sau folder, folosește isRegularFile și isDirectory.
Între verificare și folosire, alt program poate șterge sau crea fișierul. Pentru operații importante este mai sigur să încerci direct operația și să prinzi excepția (NoSuchFileException, FileAlreadyExistsException).
Parametri
| Parametru | Descriere |
|---|---|
cale |
Calea verificată. |
optiuni |
Opțional: LinkOption.NOFOLLOW_LINKS, ca să nu se urmeze legăturile simbolice. |
Ce returnează
true dacă fișierul sau folderul există.
Exemple
Exemplul 1: Verificare înainte de citire
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 setari = Path.of("setari.txt");
System.out.println("Există la început: " + Files.exists(setari));
if (!Files.exists(setari)) {
Files.writeString(setari, "tema=întunecată\n");
System.out.println("Am creat fișierul cu valorile implicite.");
}
System.out.print(Files.readString(setari));
System.out.println("Există acum: " + Files.exists(setari));
}
}
Rezultat
Există la început: false
Am creat fișierul cu valorile implicite.
tema=întunecată
Există acum: true
Exemplul 2: exists funcționează și pentru foldere
Directorul curent (.) există mereu; un folder inventat nu.
import java.nio.file.Files;
import java.nio.file.Path;
public class Main {
public static void main(String[] args) {
System.out.println(". există: " + Files.exists(Path.of(".")));
System.out.println("poze/vacanta există: " + Files.exists(Path.of("poze", "vacanta")));
System.out.println("poze/vacanta notExists: " + Files.notExists(Path.of("poze", "vacanta")));
}
}
Rezultat
. există: true
poze/vacanta există: false
poze/vacanta notExists: true
Greșeli frecvente
- Verifici cu
existsși apoi creezi fișierul, crezând că e sigur. Între cele două, alt proces îl poate crea; foloseșteCREATE_NEWși prinde excepția. - Crezi că
!existsînseamnă sigur că fișierul lipsește. Poate fi și o problemă de drepturi;notExistsface diferența.
Comenzi înrudite
Files.isDirectory: isDirectory spune dacă la cale este un folder, iar isRegularFile dacă este un fișier obișnuit.Files.delete: Șterge un fișier sau un folder gol; delete aruncă excepție dacă lipsește, deleteIfExists doar returnează false.File: Clasa veche pentru căi de fișiere: exists verifică existența, getName dă numele, length mărimea în octeți.Files: Clasa cu metode statice pentru lucrul cu fișiere și foldere: citire, scriere, copiere, mutare, ștergere, listare.