Escritura de archivos con Node.js
Escritura de un archivo
La forma más sencilla de escribir en archivos en Node.js es usar la API fs.writeFile()
.
const fs = require('node:fs')
const content = '¡Algún contenido!'
fs.writeFile('/Users/joe/test.txt', content, err => {
if (err) {
console.error(err)
} else {
// archivo escrito correctamente
}
})
Escritura de un archivo de forma síncrona
Alternativamente, puedes usar la versión síncrona fs.writeFileSync
:
const fs = require('node:fs')
const content = '¡Algún contenido!'
try {
fs.writeFileSync('/Users/joe/test.txt', content)
} catch (err) {
console.error(err)
}
También puedes usar el método fsPromises.writeFile()
basado en promesas que ofrece el módulo fs/promises
:
const fs = require('node:fs/promises')
async function example() {
try {
const content = '¡Algún contenido!'
await fs.writeFile('/Users/joe/test.txt', content)
} catch (err) {
console.log(err)
}
}
example()
De forma predeterminada, esta API reemplazará el contenido del archivo si ya existe.
Puedes modificar el valor predeterminado especificando una bandera:
fs.writeFile('/Users/joe/test.txt', content, { flag: 'a+' }, err => [])
Las banderas que probablemente usarás son:
Bandera | Descripción | Se crea el archivo si no existe |
---|---|---|
r+ | Esta bandera abre el archivo para lectura y escritura | ❌ |
w+ | Esta bandera abre el archivo para lectura y escritura y también coloca el flujo al principio del archivo | ✅ |
a | Esta bandera abre el archivo para escritura y también coloca el flujo al final del archivo | ✅ |
a+ | Esta bandera abre el archivo para lectura y escritura y también coloca el flujo al final del archivo | ✅ |
Puedes encontrar más información sobre las banderas en la documentación de fs.
Agregar contenido a un archivo
Agregar contenido a los archivos es útil cuando no deseas sobrescribir un archivo con contenido nuevo, sino agregarlo.
Ejemplos
Un método práctico para añadir contenido al final de un archivo es fs.appendFile()
(y su contraparte fs.appendFileSync()
):
const fs = require('node:fs')
const content = '¡Algún contenido!'
fs.appendFile('file_log', content, err => {
if (err) {
console.error(err)
} else {
// ¡hecho!
}
})
Ejemplo con Promesas
Aquí hay un ejemplo de fsPromises.appendFile()
:
const fs = require('node:fs/promises')
async function example() {
try {
const content = '¡Algún contenido!'
await fs.appendFile('/Users/joe/test.txt', content)
} catch (err) {
console.log(err)
}
}
example()