Ce face fs.rm / fs.unlink / fs.rmdir
rm șterge un fișier sau, cu { recursive: true }, un director cu tot conținutul lui, ca rm -r din terminal. Cu { force: true } nu dă eroare dacă ținta nu există, ca rm -f.
unlink șterge un singur fișier (sau o legătură simbolică) și eșuează pe directoare. rmdir șterge doar un director gol; pentru directoare cu conținut folosește rm cu recursive.
Ștergerea este definitivă: fișierele nu ajung în Coșul de gunoi. Verifică de două ori calea înainte să rulezi rm recursiv, mai ales când o construiești din variabile.
Parametri
| Parametru | Descriere |
|---|---|
cale |
Fișierul sau directorul de șters. |
recursive |
Opțiune rm: șterge directoare cu tot conținutul. Implicit false. |
force |
Opțiune rm: fără eroare dacă ținta lipsește. Implicit false. |
maxRetries, retryDelay |
Opțiuni rm: câte reîncercări face la erori temporare (EBUSY, EPERM pe Windows) și la ce interval, în milisecunde. |
Ce returnează
O promisiune care se rezolvă cu undefined după ștergere.
Exemple
Exemplul 1: Un fișier și un director plin
import { mkdir, writeFile, rm, readdir } from "node:fs/promises";
await writeFile("ciorna.txt", "de șters");
await mkdir("cache/imagini", { recursive: true });
await writeFile("cache/imagini/logo.png", "");
await writeFile("pastreaza.txt", "rămâne");
console.log("Înainte:", (await readdir(".")).filter((n) => n !== "exemplu.mjs").sort());
await rm("ciorna.txt");
await rm("cache", { recursive: true });
console.log("După:", (await readdir(".")).filter((n) => n !== "exemplu.mjs").sort());
Rezultat
Înainte: [ 'cache', 'ciorna.txt', 'pastreaza.txt' ]
După: [ 'pastreaza.txt' ]
Exemplul 2: force: fără eroare când ținta lipsește
import { rm } from "node:fs/promises";
try {
await rm("nu-exista.log");
} catch (eroare) {
console.log("Fără force:", eroare.code);
}
await rm("nu-exista.log", { force: true });
console.log("Cu force: nicio eroare");
Rezultat
Fără force: ENOENT
Cu force: nicio eroare
Exemplul 3: unlink și rmdir
import { mkdir, writeFile, unlink, rmdir } from "node:fs/promises";
await mkdir("export");
await writeFile("export/raport.csv", "luna,total\n");
try {
await rmdir("export");
} catch (eroare) {
console.log("rmdir pe director plin:", eroare.code);
}
await unlink("export/raport.csv");
await rmdir("export");
console.log("Am șters fișierul, apoi directorul gol");
Rezultat
rmdir pe director plin: ENOTEMPTY
Am șters fișierul, apoi directorul gol
Greșeli frecvente
- Construiești calea din date primite de la utilizator și o dai lui
rmrecursiv: o valoare goală sau..poate șterge alt director decât cel dorit. Verifică întâi calea (de exemplu cupath.resolveși o comparație cu directorul permis). - Folosești
rmdircu{ recursive: true }. Opțiunea este învechită larmdir; foloseșterm(cale, { recursive: true }). - Folosești
force: truepeste tot și nu mai observi că o cale este greșită. Puneforcedoar acolo unde lipsa fișierului este normală.
Comenzi înrudite
fs.mkdir / fs.mkdtemp: Creează un director (cu toți părinții lipsă, prin recursive: true) sau un director temporar cu nume unic (mkdtemp).fs.rename / fs.copyFile / fs.cp: Mută sau redenumește un fișier (rename), copiază un fișier (copyFile) ori un director întreg (cp cu recursive).fs.stat / fs.access / existsSync: Află informații despre un fișier (tip, mărime, date), verifică dacă există și dacă poate fi citit sau scris.path.resolve / path.relative: Transformă o cale în cale absolută (resolve), calculează drumul dintre două căi (relative) și verifică sau curăță căi.