Ce face fs.mkdir / fs.mkdtemp
mkdir creează un director. Fără opțiuni, eșuează dacă directorul există deja (EEXIST) sau dacă lipsește directorul părinte (ENOENT).
Cu { recursive: true } creează și toți părinții lipsă, ca mkdir -p din terminal, și nu dă eroare dacă directorul există deja. Promisiunea se rezolvă cu calea primului director creat sau cu undefined dacă nu a fost nevoie să creeze nimic.
mkdtemp(prefix) creează un director cu nume unic: adaugă șase caractere aleatorii după prefix. Este util pentru fișiere temporare; de obicei îl pui în os.tmpdir() și îl ștergi la final cu rm.
Parametri
| Parametru | Descriere |
|---|---|
director |
Calea directorului de creat. |
recursive |
Opțiune mkdir: creează și părinții, fără eroare dacă există deja. Implicit false. |
mode |
Opțiune mkdir: permisiunile directorului pe Linux și macOS (implicit 0o777, redus de umask). |
prefix |
Începutul numelui pentru mkdtemp; poate conține o cale, de exemplu path.join(os.tmpdir(), "raport-"). |
Ce returnează
mkdir: undefined sau, cu recursive, calea primului director creat. mkdtemp: calea directorului creat.
Exemple
Exemplul 1: Directoare imbricate dintr-un singur apel
import { mkdir, readdir } from "node:fs/promises";
const primul = await mkdir("arhiva/2026/octombrie", { recursive: true });
console.log("Primul director creat:", primul);
const aDouaOara = await mkdir("arhiva/2026/octombrie", { recursive: true });
console.log("A doua oară:", aDouaOara);
console.log(await readdir("arhiva", { recursive: true }));
Rezultat
Primul director creat: arhiva
A doua oară: undefined
[ '2026', '2026/octombrie' ]
Exemplul 2: Fără recursive: erorile EEXIST și ENOENT
import { mkdir } from "node:fs/promises";
await mkdir("facturi");
console.log("Am creat directorul facturi");
for (const cale of ["facturi", "chitante/2026"]) {
try {
await mkdir(cale);
} catch (eroare) {
console.log(`${cale}: ${eroare.code}`);
}
}
Rezultat
Am creat directorul facturi
facturi: EEXIST
chitante/2026: ENOENT
Exemplul 3: Director temporar cu mkdtemp
Numele primit este diferit la fiecare rulare, așa că exemplul afișează doar prefixul și lungimea părții aleatorii.
import { mkdtemp, writeFile, readdir, rm } from "node:fs/promises";
import path from "node:path";
const director = await mkdtemp("raport-");
const nume = path.basename(director);
console.log("Prefix:", nume.slice(0, 7), "| caractere aleatorii:", nume.length - 7);
await writeFile(path.join(director, "vanzari.csv"), "luna,total\noctombrie,1520\n");
console.log(await readdir(director));
await rm(director, { recursive: true });
console.log("Director temporar șters");
Rezultat
Prefix: raport- | caractere aleatorii: 6
[ 'vanzari.csv' ]
Director temporar șters
Greșeli frecvente
- Uiți
{ recursive: true }și primeștiENOENTpentru că lipsește un director părinte. - Verifici întâi dacă directorul există și abia apoi îl creezi. Cu
recursive: truenu ai nevoie de verificare: apelul nu eșuează dacă directorul există. - Lași directoarele create cu
mkdtempîn urmă. Ele nu se șterg singure; foloseșterm(director, { recursive: true }), ideal într-un blocfinally.
Comenzi înrudite
fs.rm / fs.unlink / fs.rmdir: Șterge fișiere și directoare: rm pentru orice (cu recursive pentru directoare pline), unlink pentru un fișier, rmdir pentru un director gol.fs.readdir: Listează conținutul unui director: numele fișierelor, opțional cu tipul lor (withFileTypes) și cu subdirectoarele (recursive).fs.writeFile / fs.appendFile: Scrie un fișier (îl creează sau îl suprascrie) ori adaugă text la sfârșitul lui, cu appendFile.os (node:os): Informații despre sistemul de operare: platformă, procesoare, memorie, directorul utilizatorului, sfârșitul de rând.path.join: Lipește mai multe bucăți într-o singură cale, cu separatorul corect pentru sistemul de operare, și curăță ./ și ../.