Skip to content

Scrittura di file con Node.js

Scrittura di un file

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

javascript
const fs = require('node:fs')
const content = 'Some content!'

fs.writeFile('/Users/joe/test.txt', content, err => {
  if (err) {
    console.error(err)
  } else {
    // file scritto correttamente
  }
})

Scrittura di un file in modo sincrono

In alternativa, è possibile utilizzare la versione sincrona fs.writeFileSync:

javascript
const fs = require('node:fs')
const content = 'Some content!'

try {
  fs.writeFileSync('/Users/joe/test.txt', content)
} catch (err) {
  console.error(err)
}

È possibile utilizzare anche il metodo fsPromises.writeFile() basato su promise offerto dal modulo fs/promises:

javascript
const fs = require('node:fs/promises')
async function example() {
  try {
    const content = 'Some content!'
    await fs.writeFile('/Users/joe/test.txt', content)
  } catch (err) {
    console.log(err)
  }
}

example()

Per impostazione predefinita, questa API sostituirà il contenuto del file se già esiste.

È possibile modificare l'impostazione predefinita specificando un flag:

javascript
fs.writeFile('/Users/joe/test.txt', content, { flag: 'a+' }, err => [])

I flag che probabilmente si utilizzeranno sono:

FlagDescrizioneIl file viene creato se non esiste
r+Questo flag apre il file per la lettura e la scrittura
w+Questo flag apre il file per la lettura e la scrittura e posiziona anche il flusso all'inizio del file
aQuesto flag apre il file per la scrittura e posiziona anche il flusso alla fine del file
a+Questo flusso apre il file per la lettura e la scrittura e posiziona anche il flusso alla fine del file

È possibile trovare maggiori informazioni sui flag nella documentazione di fs.

Aggiunta di contenuto a un file

L'aggiunta di contenuti ai file è utile quando non si desidera sovrascrivere un file con nuovo contenuto, ma piuttosto aggiungervi altro.

Esempi

Un metodo utile per aggiungere contenuto alla fine di un file è fs.appendFile() (e la sua controparte fs.appendFileSync()):

javascript
const fs = require('node:fs')
const content = 'Some content!'

fs.appendFile('file_log', content, err => {
  if (err) {
    console.error(err)
  } else {
    // done!
  }
})

Esempio con Promises

Ecco un esempio di fsPromises.appendFile():

javascript
const fs = require('node:fs/promises')
async function example() {
  try {
    const content = 'Some content!'
    await fs.appendFile('/Users/joe/test.txt', content)
  } catch (err) {
    console.log(err)
  }
}

example()