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()
.
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
:
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
:
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:
fs.writeFile('/Users/joe/test.txt', content, { flag: 'a+' }, err => [])
I flag che probabilmente si utilizzeranno sono:
Flag | Descrizione | Il 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 | ✅ |
a | Questo 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()
):
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()
:
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()