🚀 Nuova versione beta disponibile! Feedback o problemi? Contattaci

Scrittura di file con Node.js

Codegrind TeamNov 22 2023

Il modo più semplice per scrivere su file in Node.js è utilizzare l’API fs.writeFile().

const fs = require("node:fs");

const content = "Un po' di contenuto!";

fs.writeFile("/Users/joe/test.txt", content, (err) => {
  if (err) {
    console.error(err);
  }
  // File scritto con successo
});

Scrittura sincrona di un file

In alternativa, puoi utilizzare la versione sincrona fs.writeFileSync():

const fs = require("node:fs");

const content = "Un po' di contenuto!";

try {
  fs.writeFileSync("/Users/joe/test.txt", content);
  // File scritto con successo
} catch (err) {
  console.error(err);
}

Puoi anche utilizzare il metodo basato su promesse fsPromises.writeFile() offerto dal modulo fs/promises:

const fs = require("node:fs/promises");

async function esempio() {
  try {
    const content = "Un po' di contenuto!";
    await fs.writeFile("/Users/joe/test.txt", content);
  } catch (err) {
    console.log(err);
  }
}
esempio();

Per impostazione predefinita, questa API sostituirà i contenuti del file se esiste già.

Puoi modificare l’impostazione predefinita specificando una flag:

fs.writeFile("/Users/joe/test.txt", content, { flag: "a+" }, (err) => {});

Le flag che userai probabilmente sono

Flag Descrizione File Creato se Non Esiste
r+ Questa flag apre il file in lettura e scrittura.
w+ Questa flag apre il file in lettura e scrittura e posiziona lo stream all’inizio del file.
a Questa flag apre il file in scrittura e posiziona lo stream alla fine del file.
a+ Questa flag apre il file in lettura e scrittura e posiziona lo stream alla fine del file.

Aggiunta di contenuto a un file

Aggiungere contenuto a file è utile quando non si desidera sovrascrivere un file con un nuovo contenuto, ma piuttosto aggiungerlo.

Esempi

Un metodo utile per aggiungere contenuto alla fine di un file è fs.appendFile() (e il suo corrispettivo sincrono fs.appendFileSync()):

const fs = require("node:fs");

const content = "Un po' di contenuto!";

fs.appendFile("file.log", content, (err) => {
  if (err) {
    console.error(err);
  }
  // Fatto!
});

Esempio con Promises

Ecco un esempio di fsPromises.appendFile():

const fs = require("node:fs/promises");

async function esempio() {
  try {
    const content = "Un po' di contenuto!";
    await fs.appendFile("/Users/joe/test.txt", content);
  } catch (err) {
    console.log(err);
  }
}
esempio();