Files.createDirectory în Java

createDirectory creează un singur folder; createDirectories creează și folderele părinte lipsă, fără eroare dacă există.

Sintaxă
static Path createDirectory(Path cale, FileAttribute<?>... atribute) throws IOException
static Path createDirectories(Path cale, FileAttribute<?>... atribute) throws IOException

Ce face Files.createDirectory

Files.createDirectory(cale) creează exact un folder. Aruncă FileAlreadyExistsException dacă folderul există deja și NoSuchFileException dacă folderul părinte lipsește.

Files.createDirectories(cale) creează tot drumul: pentru arhiva/2026/octombrie face toate cele trei foldere, dacă lipsesc. Dacă folderul există deja, nu face nimic și nu dă eroare. De aceea este varianta folosită cel mai des înainte de a scrie fișiere.

Parametri

Parametru Descriere
cale Folderul de creat.
atribute Opțional: drepturi de acces (de exemplu permisiuni POSIX).

Ce returnează

Calea folderului creat.

Exemple

Exemplul 1: createDirectory: un singur nivel

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

public class Main {
    public static void main(String[] args) throws IOException {
        Files.createDirectory(Path.of("poze"));
        System.out.println("Am creat folderul poze");

        try {
            Files.createDirectory(Path.of("poze"));
        } catch (FileAlreadyExistsException e) {
            System.out.println("Există deja: " + e.getMessage());
        }
        try {
            Files.createDirectory(Path.of("arhiva", "2026"));
        } catch (NoSuchFileException e) {
            System.out.println("Lipsește părintele pentru: " + e.getMessage());
        }
    }
}

Rezultat

Am creat folderul poze
Există deja: poze
Lipsește părintele pentru: arhiva/2026

Exemplul 2: createDirectories: tot drumul, de câte ori vrei

A doua apelare nu dă eroare. Apoi putem scrie direct fișierul în folderul cel mai adânc.

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 folder = Path.of("arhiva", "2026", "octombrie");
        Files.createDirectories(folder);
        Files.createDirectories(folder);

        Path raport = folder.resolve("raport.txt");
        Files.writeString(raport, "Vânzări: 12.500 lei");
        System.out.println(raport + " -> " + Files.readString(raport));
        System.out.println("arhiva/2026 este folder: " + Files.isDirectory(Path.of("arhiva", "2026")));
    }
}

Rezultat

arhiva/2026/octombrie/raport.txt -> Vânzări: 12.500 lei
arhiva/2026 este folder: true

Greșeli frecvente

  • Folosești createDirectory pentru o cale cu mai multe niveluri noi: NoSuchFileException. Folosește createDirectories.
  • Calea există deja ca fișier: chiar și createDirectories aruncă FileAlreadyExistsException.

Comenzi înrudite

  • Files.delete: Șterge un fișier sau un folder gol; delete aruncă excepție dacă lipsește, deleteIfExists doar returnează false.
  • Files.isDirectory: isDirectory spune dacă la cale este un folder, iar isRegularFile dacă este un fișier obișnuit.
  • 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.resolve: Adaugă o cale la sfârșitul altei căi: folder.resolve(„note.txt”) dă folder/note.txt.