Ce face fs.writeFile / fs.appendFile
writeFile scrie datele într-un fișier. Dacă fișierul nu există, îl creează; dacă există, îi înlocuiește tot conținutul. Datele pot fi text (scris implicit în UTF-8), Buffer sau un tablou de octeți.
appendFile adaugă datele la sfârșitul fișierului, fără să șteargă ce era înainte, și creează fișierul dacă lipsește. Este potrivită pentru jurnale simple.
Cu opțiunea flag schimbi modul de deschidere. { flag: "wx" } creează fișierul doar dacă nu există; dacă există, operația eșuează cu EEXIST, așa că nu suprascrii din greșeală un fișier important. Directorul în care scrii trebuie să existe deja (vezi mkdir).
Parametri
| Parametru | Descriere |
|---|---|
cale |
Fișierul în care scrii. |
date |
Text, Buffer, tablou de octeți sau un iterabil / stream cu bucăți de date. |
opțiuni |
Codificarea ca text sau un obiect: encoding (implicit "utf8"), mode (permisiunile fișierului nou, implicit 0o666), flag ("w" la writeFile, "a" la appendFile, "wx" pentru „doar fișier nou”), signal. |
Ce returnează
O promisiune care se rezolvă cu undefined după ce datele au fost scrise.
Exemple
Exemplul 1: Scriere, suprascriere și citire
import { writeFile, readFile } from "node:fs/promises";
await writeFile("salut.txt", "Bună ziua, Ana!\n");
console.log(await readFile("salut.txt", "utf8"));
await writeFile("salut.txt", "Bună seara, Ion!\n");
console.log(await readFile("salut.txt", "utf8"));
Rezultat
Bună ziua, Ana!
Bună seara, Ion!
Exemplul 2: Un jurnal cu appendFile
Fiecare apel adaugă un rând. Valorile sunt fixe ca exemplul să dea mereu același rezultat; într-o aplicație reală ai pune și ora.
import { appendFile, readFile } from "node:fs/promises";
const comenzi = [
{ client: "Ana", total: 120.5 },
{ client: "Mihai", total: 89 },
{ client: "Elena", total: 245 },
];
for (const comanda of comenzi) {
await appendFile("comenzi.log", `${comanda.client};${comanda.total} lei\n`);
}
console.log(await readFile("comenzi.log", "utf8"));
Rezultat
Ana;120.5 lei
Mihai;89 lei
Elena;245 lei
Exemplul 3: Fișier nou, fără suprascriere: flag „wx”
import { writeFile } from "node:fs/promises";
const date = JSON.stringify({ nume: "Ana", oras: "Iași" }, null, 2);
await writeFile("profil.json", date, { flag: "wx" });
console.log("Prima scriere: fișierul a fost creat");
try {
await writeFile("profil.json", "{}", { flag: "wx" });
} catch (eroare) {
console.log("A doua scriere a eșuat:", eroare.code);
}
Rezultat
Prima scriere: fișierul a fost creat
A doua scriere a eșuat: EEXIST
Greșeli frecvente
- Folosești
writeFilecând voiai să adaugi: tot conținutul vechi dispare. Pentru adăugare foloseșteappendFilesau{ flag: "a" }. - Scrii într-un director care nu există și primești
ENOENT. Creează-l înainte cumkdir(director, { recursive: true }). - Dai un obiect direct ca date.
writeFilenu transformă obiectele în JSON: scrieJSON.stringify(obiect). - Pornești mai multe
writeFilepe același fișier fărăawait: scrierile se pot amesteca. Așteaptă fiecare scriere înainte de următoarea.
Comenzi înrudite
fs.readFile: Citește tot conținutul unui fișier: ca text dacă dai codificarea („utf8”), altfel ca Buffer cu octeții bruți.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).stream.pipeline: Leagă stream-uri în lanț (citire → transformare → scriere), cu tratarea erorilor și închiderea tuturor la final.Buffer: Șir de octeți din Node.js: date binare din fișiere, rețea sau criptografie, cu conversii în text, hex și base64.